Das unendliche Fibonacci-Wort ist eine bestimmte, unendliche Folge von Binärziffern, die durch wiederholte Verkettung endlicher Binärwörter berechnet werden.
Nehmen wir definieren , dass eine Fibonacci-Typ Wortsequenz (oder FTW - Sequenz ) ist jede Sequenz ⟨W n ⟩ , die wie folgt gebildet wird.
Beginnen Sie mit zwei beliebigen Arrays von Binärziffern. Nennen wir diese Arrays W -1 und W 0 .
Für jedes n> 0 , lassen W n ≔ W n-1 ∥ W n-2 , wobei ∥ Bezeichnet Verkettung.
Eine Folge der rekursiven Definition ist, dass W n immer ein Präfix von W n + 1 und damit von allen W k ist, so dass k> n ist . In einem gewissen Sinne bedeutet dies die Sequenz ⟨W n ⟩ konvergiert zu einem unendlichen Wort.
Formal sei W ∞ das einzige unendliche Array, so dass W n ein Präfix von W ∞ für alle n ≥ 0 ist .
Wir bezeichnen jedes durch den obigen Prozess gebildete unendliche Wort als unendliches FTW .
Aufgabe
Schreiben Sie ein Programm oder eine Funktion, die zwei Binärwörter W -1 und W 0 als Eingabe akzeptiert und W ∞ ausgibt, wobei die folgenden zusätzlichen Regeln eingehalten werden:
Sie können die Wörter in beliebiger Reihenfolge akzeptieren. als zwei Arrays, ein Array von Arrays, zwei Strings, ein Array von Strings oder ein einzelner String mit einem Begrenzer Ihrer Wahl.
Sie können die Ziffern des unendlichen Wortes entweder ohne Begrenzer oder mit einem konsistenten Begrenzer zwischen jedem Paar benachbarter Ziffern drucken.
Gehen Sie in jedem Fall davon aus, dass Ihrem Code niemals der Speicher ausgeht und die Datentypen nicht überlaufen.
Dies bedeutet insbesondere, dass alle Ausgaben an STDOUT oder STDERR, die das Ergebnis eines Absturzes sind, ignoriert werden.
Wenn ich Ihren Code auf meinem Computer (Intel i7-3770, 16 GiB RAM, Fedora 21) eine Minute lang laufen lasse und die Ausgabe an weiterleite,
wc -c
muss er mindestens eine Million Stellen W ∞ für (W -1 , W 0 ) ausgeben. = (1, 0) .Es gelten die Standardregeln für Code-Golf .
Beispiel
Sei W -1 = 1 und W 0 = 0 .
Dann ist W 1 = 01 , W 2 = 010 , W 3 = 01001 , W 4 = 01001010 … und W ∞ = 010010100100101001010… .
Dies ist das unendliche Fibonacci-Wort.
Testfälle
Alle Testfälle enthalten die ersten 1000 Stellen des unendlichen FTW.
Input: 1 0
Output: 0100101001001010010100100101001001010010100100101001010010010100100101001010010010100100101001010010010100101001001010010010100101001001010010100100101001001010010100100101001001010010100100101001010010010100100101001010010010100100101001010010010100101001001010010010100101001001010010100100101001001010010100100101001001010010100100101001010010010100100101001010010010100101001001010010010100101001001010010010100101001001010010100100101001001010010100100101001001010010100100101001010010010100100101001010010010100101001001010010010100101001001010010010100101001001010010100100101001001010010100100101001001010010100100101001010010010100100101001010010010100101001001010010010100101001001010010010100101001001010010100100101001001010010100100101001010010010100100101001010010010100100101001010010010100101001001010010010100101001001010010010100101001001010010100100101001001010010100100101001010010010100100101001010010010100100101001010010010100101001001010010010100101001001010010100100101001001
Input: 0 01
Output: 0100101001001010010100100101001001010010100100101001010010010100100101001010010010100100101001010010010100101001001010010010100101001001010010100100101001001010010100100101001001010010100100101001010010010100100101001010010010100100101001010010010100101001001010010010100101001001010010100100101001001010010100100101001001010010100100101001010010010100100101001010010010100101001001010010010100101001001010010010100101001001010010100100101001001010010100100101001001010010100100101001010010010100100101001010010010100101001001010010010100101001001010010010100101001001010010100100101001001010010100100101001001010010100100101001010010010100100101001010010010100101001001010010010100101001001010010010100101001001010010100100101001001010010100100101001010010010100100101001010010010100100101001010010010100101001001010010010100101001001010010010100101001001010010100100101001001010010100100101001010010010100100101001010010010100100101001010010010100101001001010010010100101001001010010100100101001001
Input: 11 000
Output: 0001100000011000110000001100000011000110000001100011000000110000001100011000000110000001100011000000110001100000011000000110001100000011000110000001100000011000110000001100000011000110000001100011000000110000001100011000000110000001100011000000110001100000011000000110001100000011000110000001100000011000110000001100000011000110000001100011000000110000001100011000000110001100000011000000110001100000011000000110001100000011000110000001100000011000110000001100000011000110000001100011000000110000001100011000000110001100000011000000110001100000011000000110001100000011000110000001100000011000110000001100000011000110000001100011000000110000001100011000000110001100000011000000110001100000011000000110001100000011000110000001100000011000110000001100011000000110000001100011000000110000001100011000000110001100000011000000110001100000011000000110001100000011000110000001100000011000110000001100011000000110000001100011000000110000001100011000000110001100000011000000110001100000011000110000001100000011
Input: 10 010
Output: 0101001001010010100100101001001010010100100101001010010010100100101001010010010100100101001010010010100101001001010010010100101001001010010100100101001001010010100100101001001010010100100101001010010010100100101001010010010100100101001010010010100101001001010010010100101001001010010100100101001001010010100100101001001010010100100101001010010010100100101001010010010100101001001010010010100101001001010010010100101001001010010100100101001001010010100100101001001010010100100101001010010010100100101001010010010100101001001010010010100101001001010010010100101001001010010100100101001001010010100100101001001010010100100101001010010010100100101001010010010100101001001010010010100101001001010010010100101001001010010100100101001001010010100100101001010010010100100101001010010010100100101001010010010100101001001010010010100101001001010010010100101001001010010100100101001001010010100100101001010010010100100101001010010010100100101001010010010100101001001010010010100101001001010010100100101001001010
Input: 101 110
Output: 1101011101101011101011101101011101101011101011101101011101011101101011101101011101011101101011101101011101011101101011101011101101011101101011101011101101011101011101101011101101011101011101101011101101011101011101101011101011101101011101101011101011101101011101101011101011101101011101011101101011101101011101011101101011101011101101011101101011101011101101011101101011101011101101011101011101101011101101011101011101101011101011101101011101101011101011101101011101101011101011101101011101011101101011101101011101011101101011101101011101011101101011101011101101011101101011101011101101011101011101101011101101011101011101101011101101011101011101101011101011101101011101101011101011101101011101101011101011101101011101011101101011101101011101011101101011101011101101011101101011101011101101011101101011101011101101011101011101101011101101011101011101101011101011101101011101101011101011101101011101101011101011101101011101011101101011101101011101011101101011101101011101011101101011101011101101011101