Descargo de responsabilidad: la codificación de Levenshtein no tiene ninguna relación con la métrica de distancia de edición de Levenshtein .
<Inserte una larga historia sobre por qué los códigos de Levenshtein deben calcularse aquí.>
El código
La codificación de Levenshtein es un sistema de asignación de códigos binarios a enteros no negativos que retiene alguna propiedad extraña en la probabilidad que no es relevante para este desafío. Denotaremos este código como L ( n ). Wikipedia describe esto como un proceso de cinco pasos:
- Inicialice la variable de conteo de pasos C a 1.
- Escriba la representación binaria del número sin
1
el inicio del código. - Sea M el número de bits escritos en el paso 2.
- Si M no es 0, incremente C , repita desde el paso 2 con M como el nuevo número.
- Escriba C
1
bits y0
a al principio del código.
Sin embargo, el código también se puede describir de forma recursiva:
- Si el número es 0, entonces su código es
0
. - Escriba la representación binaria del número sin
1
el inicio del código. - Sea M el número de bits escritos en el paso 2.
- Escriba L ( M ) al comienzo del código.
- Escribe un
1
poco al comienzo del código.
Para aquellos que prefieren ejemplos, aquí está el proceso recursivo para L (87654321), con denotación de concatenación:
El reto
Escriba un programa o función que, dado un número n , emite la cadena de bits L ( n ) en cualquier formato razonable (esto incluye devolver un número con dichos bits). Las lagunas estándar son, como siempre, no permitidas.
Ejemplos
Entrada: 5
Salida: 1110001
Entrada: 30
Salida: 111100001110
Entrada: 87654321
Salida: 111110000101001001110010111111110110001
Entrada: 0
Salida: 0
±
lugar de una funciónf
.