Це репост старого виклику з метою пристосування вимог вводу / виводу до наших останніх стандартів. Це робиться, намагаючись дозволити більше мов брати участь у виклику щодо цієї популярної послідовності. Дивіться цей мета-пост для обговорення репосту.
Послідовність Kolakoski - це весела самореференційна послідовність, яка має честь бути OEIS послідовністю A000002 (і це набагато простіше зрозуміти та реалізувати, ніж A000001). Послідовність починається з 1 , складається лише з 1 s і 2 s, а елемент послідовності a (n) описує довжину n- го запуску 1 s або 2 s у послідовності. Це однозначно визначає послідовність, яка повинна бути (з візуалізацією прогонів під нею):
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 (тобто або роздрукувати перший п або перший п + 1 Терміни).
- Виводити значення з послідовності на невизначений термін.
У другому та третьому випадку ви можете обрати будь-який розумний, однозначний формат списку. Добре, якщо між елементами немає роздільника, оскільки вони завжди є однією цифрою за визначенням.
У третьому випадку, якщо ваше подання є функцією, ви також можете повернути нескінченний список або генератор мовами, які їх підтримують.
Ви можете написати програму чи функцію та скористатися будь-яким із наших стандартних методів отримання вводу та надання виводу. Зауважте, що ці лазівки за замовчуванням заборонені.
Це код-гольф , тому найкоротший вірний відповідь - вимірюється в байтах - виграє.