Нескінченне слово Фібоначчі є специфічним, нескінченна послідовність двійкових цифр, які обчислюються шляхом багаторазового конкатенації кінцевих двійкових слів.
Визначимо , що послідовність слів Фібоначчі типу (або FTW послідовність ) є будь-яка послідовність ⟨W п ⟩ , який формується таким чином .
Почніть з двох довільних масивів двійкових цифр. Назвемо ці масиви W -1 і W 0 .
Для кожного n> 0 , нехай W n ≔ W n-1 ∥ W n-2 , де ∥ позначає конкатенацію.
Наслідком рекурсивного визначення є те, що W n - це завжди префікс W n + 1 і, отже, всіх W k таких, що k> n . У певному сенсі, це означає послідовність ⟨W п ⟩ сходиться до нескінченного слову.
Формально, нехай W ∞ бути єдиним нескінченним масив таким чином, що Ш п є префіксом W ∞ для всіх п ≥ 0 .
Ми називатимемо будь-яке нескінченне слово, утворене вищевказаним процесом, нескінченним FTW .
Завдання
Напишіть програму або функцію, яка приймає два двійкові слова W -1 і W 0 вхідні як вхідні дані і друкує W ∞ , дотримуючись наступних, додаткових правил:
Ви можете приймати слова в будь-якому порядку; як два масиви, масив масивів, два рядки, масив рядків або один рядок з роздільником, який ви обрали.
Ви можете друкувати цифри нескінченного слова або без роздільника, або з послідовним роздільником між кожною парою сусідніх цифр.
Припустимо, що у коду ніколи не залишиться пам’яті та його типи даних не переповнюються.
Зокрема, це означає, що будь-який вихід до STDOUT або STDERR, який є результатом збоїв, буде ігнорований.
Якщо я запускаю ваш код на моїй машині (Intel i7-3770, 16 GiB оперативної пам’яті, Fedora 21) протягом однієї хвилини і передаю його вихід
wc -c
, він повинен надрукувати щонайменше мільйон цифр W ∞ для (W -1 , W 0 ) = (1, 0) .Діють стандартні правила гольф-коду .
Приклад
Нехай W -1 = 1 і W 0 = 0 .
Тоді W 1 = 01 , W 2 = 010 , W 3 = 01001 , W 4 = 01001010 … і W ∞ = 010010100100101001010… .
Це нескінченне слово Фібоначчі.
Тестові справи
Усі тестові приклади містять перші 1000 цифр нескінченного 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