Haftungsausschluss: Die Levenshtein-Codierung hat nichts mit der Levenshtein-Editierdistanzmetrik zu tun .
<Fügen Sie hier eine lange Geschichte darüber ein, warum Levenshtein-Codes berechnet werden müssen.>
Der Code
Die Levenshtein-Codierung ist ein System zum Zuweisen von Binärcodes zu nichtnegativen Ganzzahlen, das eine seltsame Eigenschaft in der Wahrscheinlichkeit beibehält, die für diese Herausforderung nicht relevant ist. Wir werden diesen Code als L ( n ) bezeichnen. Wikipedia beschreibt dies als einen fünfstufigen Prozess:
- Initialisieren Sie die Schrittzählvariable C auf 1.
- Schreiben Sie die binäre Darstellung der Zahl, ohne dass dies
1
zum Anfang des Codes führt. - Sei M die Anzahl der in Schritt 2 geschriebenen Bits.
- Wenn M nicht 0 ist, erhöhen Sie C und wiederholen Sie ab Schritt 2 mit M als neuer Zahl.
- Schreiben Sie C-
1
Bits und a0
an den Anfang des Codes.
Der Code kann jedoch auch rekursiv beschrieben werden:
- Wenn die Zahl 0 ist, lautet der Code
0
. - Schreiben Sie die binäre Darstellung der Zahl, ohne dass dies
1
zum Anfang des Codes führt. - Sei M die Anzahl der in Schritt 2 geschriebenen Bits.
- Schreiben Sie L ( M ) an den Anfang des Codes.
- Schreiben Sie ein
1
bisschen an den Anfang des Codes.
Für diejenigen, die Beispiele bevorzugen, ist hier der rekursive Prozess für L (87654321) mit der Bezeichnung Verkettung:
Die Herausforderung
Schreiben Sie ein Programm oder eine Funktion, die bei gegebener Zahl n den Bitstring L ( n ) in einem beliebigen vernünftigen Format ausgibt (dies schließt die Rückgabe einer Zahl mit diesen Bits ein). Standardlücken sind wie immer nicht erlaubt.
Beispiele
Eingang: 5
Ausgabe: 1110001
Eingang: 30
Ausgabe: 111100001110
Eingang: 87654321
Ausgabe: 111110000101001001110010111111110110001
Eingang: 0
Ausgabe: 0
±
anstelle einer Funktion definierenf
.