Avis de non-responsabilité: le codage Levenshtein n'a aucun lien avec la métrique de distance d'édition Levenshtein .
<Insérer une longue histoire sur la raison pour laquelle les codes Levenshtein doivent être calculés ici.>
Le code
Le codage Levenshtein est un système d'attribution de codes binaires à des entiers non négatifs qui conserve une propriété étrange en probabilité qui n'est pas pertinente pour ce défi. Nous désignerons ce code par L ( n ). Wikipedia décrit cela comme un processus en cinq étapes:
- Initialisez la variable de comptage de pas C à 1.
- Écrivez la représentation binaire du nombre sans le mener
1
au début du code. - Soit M le nombre de bits écrits à l'étape 2.
- Si M n'est pas 0, incrémentez C , répétez à partir de l'étape 2 avec M comme nouveau numéro.
- Écrivez C
1
bits et a0
au début du code.
Cependant, le code peut également être décrit de manière récursive:
- Si le nombre est 0, alors son code est
0
. - Écrivez la représentation binaire du nombre sans le mener
1
au début du code. - Soit M le nombre de bits écrits à l'étape 2.
- Écrivez L ( M ) au début du code.
- Écrivez un
1
peu au début du code.
Pour ceux qui préfèrent les exemples, voici le processus récursif pour L (87654321), avec dénotation de concaténation:
Le défi
Écrivez un programme ou une fonction qui, étant donné un nombre n , sort la chaîne de bits L ( n ) dans n'importe quel format raisonnable (cela inclut le retour d'un nombre avec lesdits bits). Les failles standard sont, comme toujours, interdites.
Exemples
Contribution: 5
Production: 1110001
Contribution: 30
Production: 111100001110
Contribution: 87654321
Production: 111110000101001001110010111111110110001
Contribution: 0
Production: 0
±
au lieu d'une fonctionf
.