Dichiarazione di non responsabilità: la codifica di Levenshtein non è completamente correlata alla metrica di modifica della distanza di Levenshtein .
<Inserisci una lunga storia sul perché i codici Levenshtein devono essere calcolati qui.>
Il codice
La codifica di Levenshtein è un sistema di assegnazione di codici binari a numeri interi non negativi che mantiene in probabilità alcune strane proprietà che non sono rilevanti per questa sfida. Indicheremo questo codice come L ( n ). Wikipedia lo descrive come un processo in cinque fasi:
- Inizializza la variabile conteggio dei passi da C a 1.
- Scrivi la rappresentazione binaria del numero senza che porti
1
all'inizio del codice. - Sia M il numero di bit scritti nel passaggio 2.
- Se M non è 0, incrementare C , ripetere dal passaggio 2 con M come nuovo numero.
- Scrivi C
1
bit e0
a all'inizio del codice.
Tuttavia, il codice può anche essere descritto in modo ricorsivo:
- Se il numero è 0, il suo codice è
0
. - Scrivi la rappresentazione binaria del numero senza che porti
1
all'inizio del codice. - Sia M il numero di bit scritti nel passaggio 2.
- Scrivi L ( M ) all'inizio del codice.
- Scrivi un
1
po 'all'inizio del codice.
Per coloro che preferiscono gli esempi, ecco il processo ricorsivo per L (87654321), con denotazione di concatenazione:
La sfida
Scrivi un programma o una funzione che, dato un numero n , emetta la stringa di bit L ( n ) in qualsiasi formato ragionevole (questo include la restituzione di un numero con detti bit). Le scappatoie standard sono, come sempre, vietate.
Esempi
Ingresso: 5
Produzione: 1110001
Ingresso: 30
Produzione: 111100001110
Ingresso: 87654321
Produzione: 111110000101001001110010111111110110001
Ingresso: 0
Produzione: 0
±
invece di una funzionef
.