Это перепост старой проблемы , чтобы приспособить требования ввода / вывода к нашим недавним стандартам. Это сделано для того, чтобы позволить большему количеству языков принять участие в соревновании об этой популярной последовательности. Смотрите этот мета-пост для обсуждения репоста.
Последовательность Колакоски представляет собой забавную самоссылочную последовательность, которая имеет честь быть последовательностью OEIS A000002 (и ее гораздо легче понять и реализовать, чем A000001). Последовательность начинается с 1 , состоит только из 1 с и 2 с, а элемент последовательности a (n) описывает длину n- го цикла 1 с или 2 с в последовательности. Это однозначно определяет последовательность (с визуализацией прогонов внизу):
1,2,2,1,1,2,1,2,2,1,2,2,1,1,2,1,1,2,2,1,2,1,1,2,1,2,2,1,1,2,1,1,2,...
= === === = = === = === === = === === = = === = = === === = === =
1, 2, 2, 1,1, 2, 1, 2, 2, 1, 2, 2, 1,1, 2, 1,1, 2, 2, 1, 2, 1,...
Ваша задача, конечно, реализовать эту последовательность. Для этого вы можете выбрать один из трех форматов:
- Возьмите вход n и выведите n- й член последовательности, где n начинается с 0 или 1 .
- Возьмем вход н и выход термины вплоть до и включая п - й член последовательности, где п начинается либо от 0 или 1 (т.е. либо напечатать первую п или первый N + 1 терминов).
- Выводить значения из последовательности бесконечно.
Во втором и третьем случае вы можете выбрать любой разумный, однозначный формат списка. Хорошо, если между элементами нет разделителя, поскольку по определению они всегда однозначные.
В третьем случае, если ваше представление является функцией, вы также можете вернуть бесконечный список или генератор на языках, которые их поддерживают.
Вы можете написать программу или функцию и использовать любой из наших стандартных методов получения ввода и предоставления вывода. Обратите внимание, что эти лазейки по умолчанию запрещены.
Это код-гольф , поэтому самый короткий действительный ответ - измеренный в байтах - выигрывает.