La distanza di Hamming tra due stringhe di uguale lunghezza è il numero di posizioni in cui i simboli corrispondenti sono diversi.
Lascia che Psia una stringa binaria di lunghezza ne che Tsia una stringa binaria di lunghezza 2n-1. Possiamo calcolare le ndistanze di Hamming tra Pe tutte le nsottostringhe di Tin ordine da sinistra a destra e inserirle in un array (o elenco).
Esempio di sequenza della distanza di Hamming
Let P = 101and T = 01100. La sequenza delle distanze di Hamming che ottieni da questa coppia è 2,2,1.
Compito
Per aumentare a npartire da n=1, considera tutte le possibili coppie di stringhe binarie Pdi lunghezza ne Tlunghezza 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 ntuo 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 ndal 1al 8ottimale 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-codelascia più spazio per le ottimizzazioni attraverso ottimizzazioni a livello di codice e un buon algoritmo. Quindi penso che faster-codesia meglio di faster-algorithm.