Nieskończony słowo Fibonacciego jest specyficzny, nieskończony ciąg cyfr binarnych, które są obliczane przez wielokrotne łączenie skończonych słów binarnych.
Określmy że sekwencja słowo Fibonacciego typu (lub FTW sekwencja ) jest dowolna sekwencja ⟨W n ⟩ , który jest utworzony w sposób następujący.
Rozpocznij od dwóch dowolnych tablic cyfr binarnych. Nazwijmy te tablice W -1 i W 0 .
Dla każdego n> 0 , niech W n ≔ W n-1 ∥ W n-2 , gdzie ∥ oznacza konkatenację.
Konsekwencją definicji rekurencyjnej jest to, że W n jest zawsze prefiksem W n + 1, a zatem wszystkich W k takich, że k> n . W pewnym sensie oznacza to, że sekwencja „ W n ” zbiega się w nieskończone słowo.
Formalnie niech W ∞ będzie jedyną nieskończoną tablicą, tak że W n jest prefiksem W ∞ dla wszystkich n ≥ 0 .
Każde nieskończone słowo utworzone przez powyższy proces nazwiemy nieskończonym FTW .
Zadanie
Napisz program lub funkcję, która przyjmuje dwa binarne słowa W -1 i W 0 jako dane wejściowe i wypisuje W ∞ , przestrzegając następujących dodatkowych zasad:
Możesz zaakceptować słowa w dowolnej kolejności; jako dwie tablice, tablica tablic, dwa ciągi, tablica ciągów lub pojedynczy ciąg z wybranym ogranicznikiem.
Możesz wydrukować cyfry nieskończonego słowa albo bez separatora, albo ze spójnym separatorem między każdą parą sąsiednich cyfr.
Do wszystkich celów należy założyć, że w kodzie nigdy nie zabraknie pamięci i że jego typy danych nie zostaną przepełnione.
W szczególności oznacza to, że wszelkie dane wyjściowe do STDOUT lub STDERR będące wynikiem awarii zostaną zignorowane.
Jeśli uruchomię kod na moim komputerze (Intel i7-3770, 16 GiB RAM, Fedora 21) przez jedną minutę i potokuję jego dane wyjściowe
wc -c
, musi wydrukować co najmniej milion cyfr W ∞ dla (W -1 , W 0 ) = (1, 0) .Obowiązują standardowe zasady gry w golfa .
Przykład
Niech W -1 = 1 i W 0 = 0 .
Następnie W 1 = 01 , W 2 = 010 , W 3 = 01001 , W 4 = 01001010 … i W ∞ = 010010100100101001010… .
To nieskończony słowo Fibonacciego.
Przypadki testowe
Wszystkie przypadki testowe zawierają pierwsze 1000 cyfr nieskończonej 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