Der Hamming-Abstand zwischen zwei gleich langen Saiten ist die Anzahl der Positionen, an denen sich die entsprechenden Symbole unterscheiden.
Sei P
eine binäre Zeichenfolge der Länge n
und T
eine binäre Zeichenfolge der Länge 2n-1
. Wir können die n
Hamming-Abstände zwischen P
und jedem n
Teilstring T
in der Reihenfolge von links nach rechts berechnen und sie in ein Array (oder eine Liste) einfügen .
Beispiel Hamming-Distanzsequenz
Lass P = 101
und T = 01100
. Die Reihenfolge der Hamming-Entfernungen, die Sie von diesem Paar erhalten, ist 2,2,1
.
Aufgabe
Berücksichtigen Sie zum Erhöhen n
ab n=1
alle möglichen Paare von binären Zeichenfolgen P
mit Länge n
und T
Länge 2n-1
. Es gibt 2**(n+2n-1)
solche Paare und damit viele Sequenzen von Hamming-Entfernungen. Viele dieser Sequenzen sind jedoch identisch. Die Aufgabe besteht darin, herauszufinden, wie viele für jeden unterschiedlich sind n
.
Ihr Code sollte eine Zahl pro Wert von ausgeben n
.
Ergebnis
Ihre Punktzahl ist die höchste, die n
Ihr Code in 5 Minuten auf meinem Computer erreicht. Das Timing ist für die Gesamtlaufzeit, nicht nur dafür n
.
Wer gewinnt
Die Person mit der höchsten Punktzahl gewinnt. Wenn zwei oder mehr Personen die gleiche Punktzahl erzielen, gewinnt die erste Antwort.
Beispielantworten
Denn n
von 1
bis zu 8
den optimalen Antworten sind 2, 9, 48, 297, 2040, 15425, 125232, 1070553
.
Sprachen und Bibliotheken
Sie können jede verfügbare Sprache und Bibliothek verwenden, die Sie mögen. Wenn möglich, ist es gut, wenn Sie Ihren Code ausführen können. Geben Sie daher bitte eine vollständige Erklärung an, wie Sie Ihren Code unter Linux ausführen / kompilieren können, wenn dies überhaupt möglich ist.
Mein Computer Die Timings werden auf meinem 64-Bit-Computer ausgeführt. Dies ist eine Standard-Ubuntu-Installation mit 8 GB RAM, AMD FX-8350 Eight-Core-Prozessor und Radeon HD 4250. Dies bedeutet auch, dass ich Ihren Code ausführen kann.
Führende Antworten
- 11 in C ++ von feersum. 25 Sekunden.
- 11 in C ++ von Andrew Epstein. 176 Sekunden.
- 10 in Javascript von Neil. 54 Sekunden.
- 9 in Haskell von Nimi. 4 Minuten und 59 Sekunden.
- 8 in Javascript von fəˈnɛtɪk. 10 Sekunden.
fastest-code
Blätter mehr Raum für Optimierungen durch beide Code - Ebene Optimierungen und einem guten Algorithmus. Also ich denke das faster-code
ist besser als faster-algorithm
.