Der Hamming-Abstand zwischen zwei gleich langen Saiten ist die Anzahl der Positionen, an denen sich die entsprechenden Symbole unterscheiden.
Sei Peine binäre Zeichenfolge der Länge nund Teine binäre Zeichenfolge der Länge 2n-1. Wir können die nHamming-Abstände zwischen Pund jedem nTeilstring Tin der Reihenfolge von links nach rechts berechnen und sie in ein Array (oder eine Liste) einfügen .
Beispiel Hamming-Distanzsequenz
Lass P = 101und T = 01100. Die Reihenfolge der Hamming-Entfernungen, die Sie von diesem Paar erhalten, ist 2,2,1.
Aufgabe
Berücksichtigen Sie zum Erhöhen nab n=1alle möglichen Paare von binären Zeichenfolgen Pmit Länge nund TLä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 nIhr 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 nvon 1bis zu 8den 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-codeBlätter mehr Raum für Optimierungen durch beide Code - Ebene Optimierungen und einem guten Algorithmus. Also ich denke das faster-codeist besser als faster-algorithm.