면책 조항 : Levenshtein 코딩은 Levenshtein 편집 거리 메트릭 과 완전히 관련이 없습니다 .
<레 벤슈 테인 코드를 계산해야하는 이유에 대한 긴 이야기를 입력하십시오.>
코드
Levenshtein 코딩 은 바이너리 코드를 음이 아닌 정수에 할당하여이 문제와 관련이없는 이상한 속성을 확률로 유지하는 시스템입니다. 이 코드를 L ( n )으로 표시합니다. Wikipedia는이를 5 단계 프로세스로 설명합니다.
- 걸음 수 변수 C 를 1로 초기화하십시오 .
1
코드의 시작으로 이어지지 않고 숫자의 이진 표현을 작성하십시오 .- 하자 M은 2 단계에서 기록 된 비트의 숫자.
- M 이 0이 아닌 경우 C를 증가 시키고 M 을 새 숫자로 사용하여 2 단계부터 반복 하십시오.
- 코드의 시작 부분에 C
1
비트와 a0
를 씁니다 .
그러나 코드를 재귀 적으로 설명 할 수도 있습니다.
- 숫자가 0이면 코드는
0
입니다. 1
코드의 시작으로 이어지지 않고 숫자의 이진 표현을 작성하십시오 .- 하자 M은 2 단계에서 기록 된 비트의 숫자.
- 코드 시작 부분에 L ( M )을 씁니다 .
1
코드의 시작 부분에 비트를 씁니다 .
예제를 선호하는 사람들을 위해 연결 을 나타내는 L 의 재귀 프로세스는 다음과 같습니다 (87654321) .
도전
숫자 n이 주어지면 비트 열 L ( n )을 적절한 형식으로 출력 하는 프로그램이나 함수를 작성하십시오 (이는 비트로 숫자를 반환하는 것을 포함합니다). 표준 허점은 항상 허용되지 않습니다.
예
입력: 5
산출: 1110001
입력: 30
산출: 111100001110
입력: 87654321
산출: 111110000101001001110010111111110110001
입력: 0
산출: 0
±
함수 대신 단항 연산자 를 정의하여 몇 바이트를 절약 할 수 있다고 확신합니다f
.