Бесконечное слово Фибоначчи является специфическим, бесконечная последовательность двоичных цифр, которые вычисляются путем многократного конкатенации конечных двоичных слов.
Определим , что последовательность слов Фибоначчи типа (или 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 n является префиксом W ∞ для всех n ≥ 0 .
Мы будем называть любое бесконечное слово, образованное описанным выше процессом, бесконечным FTW .
задача
Напишите программу или функцию, которая принимает два двоичных слова W -1 и W 0 в качестве входных данных и печатает W ∞ , соблюдая следующие дополнительные правила:
Вы можете принять слова в любом порядке; как два массива, массив массивов, две строки, массив строк или одна строка с разделителем по вашему выбору.
Вы можете печатать цифры бесконечного слова либо без разделителя, либо с постоянным разделителем между каждой парой соседних цифр.
Предположим, что вашему коду никогда не будет не хватать памяти и что его типы данных не переполняются.
В частности, это означает, что любой вывод в STDOUT или STDERR, который является результатом сбоя, будет игнорироваться.
Если я запускаю ваш код на моей машине (Intel i7-3770, 16 ГБ ОЗУ, 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