Ненегативні цілі числа нудьгують завжди мати однакових двох * сусідів, тому вони вирішують трохи змішати речі. Однак вони також ліниві і хочуть якомога ближче до свого початкового положення.
Вони придумують такий алгоритм:
- Перший елемент дорівнює 0.
- Елемент - це найменше число, яке ще немає в послідовності і яке не є сусідом елемента .
Це породжує таку нескінченну послідовність:
0,2,4,1,3,5,7,9,6,8,10,12,14,11,13,15,17,19,16,18,20,22,24,21,23,25,27,29,26,28 ...
0
є першим елементом. 1
- це найменше число, яке ще не є в послідовності, але воно є сусідом 0
. Наступне найменше число - 2
значить, це другий елемент послідовності. Тепер інші числа є 1,3,4,5,6,...
, але як обидва, так 1
і 3
сусіди 2
, 4
є третім членом послідовності. Оскільки 1
не є сусідом 4
, він, нарешті, може зайняти своє місце як четвертий елемент.
Завдання
Напишіть функцію або програму в якомога менше байтах, що генерує вищевказану послідовність.
Ви можете
- виводити послідовність нескінченно,
- взяти вхід і повернути елемент послідовності, або
- взяти вхід і повернути перші елементів послідовності.
І нульова, або одна індексація чудово, якщо ви виберете один із двох останніх варіантів.
Вам не потрібно дотримуватися алгоритму, наведеного вище, будь-який метод, який створює ту саму послідовність, чудово.
Натхненний Code golf найкращою перестановкою . Виявляється, це A277618 .
* Нуль має буквально лише одного сусіда і насправді не хвилює.