Isenção de responsabilidade: a codificação de Levenshtein não tem nenhuma relação com a métrica de distância de edição de Levenshtein .
<Insira uma longa história sobre por que os códigos de Levenshtein precisam ser calculados aqui.>
O código
A codificação de Levenshtein é um sistema de atribuição de códigos binários a números inteiros não negativos que retém alguma propriedade estranha em probabilidade que não é relevante para esse desafio. Denotaremos esse código como L ( n ). A Wikipedia descreve isso como um processo de cinco etapas:
- Inicialize a variável de contagem de etapas C para 1.
- Escreva a representação binária do número sem
1
o início do código. - Seja M o número de bits escritos na etapa 2.
- Se M não for 0, incremente C , repita da etapa 2 com M como o novo número.
- Escreva C
1
bits e0
a no início do código.
No entanto, o código também pode ser descrito recursivamente:
- Se o número for 0, seu código será
0
. - Escreva a representação binária do número sem
1
o início do código. - Seja M o número de bits escritos na etapa 2.
- Escreva L ( M ) no início do código.
- Escreva um
1
pouco para o início do código.
Para quem prefere exemplos, eis o processo recursivo para L (87654321), com denotando concatenação:
O desafio
Escreva um programa ou função que, dado um número n , produza a sequência de bits L ( n ) em qualquer formato razoável (isso inclui retornar um número com os referidos bits). As brechas padrão são, como sempre, proibidas.
Exemplos
Entrada: 5
Resultado: 1110001
Entrada: 30
Resultado: 111100001110
Entrada: 87654321
Resultado: 111110000101001001110010111111110110001
Entrada: 0
Resultado: 0
±
vez de uma funçãof
.