La distanza di Hamming tra due stringhe di uguale lunghezza è il numero di posizioni in cui i simboli corrispondenti sono diversi.
Lascia che P
sia una stringa binaria di lunghezza n
e che T
sia una stringa binaria di lunghezza 2n-1
. Possiamo calcolare le n
distanze di Hamming tra P
e tutte le n
sottostringhe di T
in ordine da sinistra a destra e inserirle in un array (o elenco).
Esempio di sequenza della distanza di Hamming
Let P = 101
and T = 01100
. La sequenza delle distanze di Hamming che ottieni da questa coppia è 2,2,1
.
Compito
Per aumentare a n
partire da n=1
, considera tutte le possibili coppie di stringhe binarie P
di lunghezza n
e T
lunghezza 2n-1
. Esistono 2**(n+2n-1)
coppie del genere e quindi molte sequenze di distanze di Hamming. Tuttavia, molte di queste sequenze saranno identiche. Il compito è quello di trovare quanti sono distinti per ciascuno n
.
Il tuo codice dovrebbe generare un numero per valore di n
.
Punto
Il tuo punteggio è il massimo che il n
tuo codice raggiunge sulla mia macchina in 5 minuti. Il tempismo è per il tempo di esecuzione totale, non solo per quello n
.
Chi vince
Vince la persona con il punteggio più alto. Se due o più persone finiscono con lo stesso punteggio, è la prima risposta a vincere.
Risposte di esempio
Per n
dal 1
al 8
ottimale risposte sono 2, 9, 48, 297, 2040, 15425, 125232, 1070553
.
Lingue e biblioteche
È possibile utilizzare qualsiasi lingua e libreria disponibili. Laddove possibile, sarebbe opportuno poter eseguire il codice, quindi includere una spiegazione completa su come eseguire / compilare il codice in Linux, se possibile.
La mia macchina I tempi verranno eseguiti sulla mia macchina a 64 bit. Questa è un'installazione Ubuntu standard con 8 GB di RAM, processore AMD FX-8350 Eight-Core e Radeon HD 4250. Ciò significa anche che devo essere in grado di eseguire il codice.
Risposte principali
- 11 in C ++ per feersum. 25 secondi.
- 11 in C ++ di Andrew Epstein. 176 secondi.
- 10 in Javascript di Neil. 54 secondi.
- 9 in Haskell di nimi. 4 minuti e 59 secondi.
- 8 in Javascript da fəˈnɛtɪk. 10 secondi.
fastest-code
lascia più spazio per le ottimizzazioni attraverso ottimizzazioni a livello di codice e un buon algoritmo. Quindi penso che faster-code
sia meglio di faster-algorithm
.