Nieujemne liczby całkowite nudzą się zawsze posiadaniem tych samych dwóch * sąsiadów, więc decydują się trochę pomieszać. Są jednak leniwi i chcą pozostać jak najbliżej swojej pierwotnej pozycji.
Wymyślają następujący algorytm:
- Pierwszy element to 0.
- Element jest najmniejszą liczbą, która nie jest jeszcze obecna w sekwencji i która nie jest sąsiadem elementu .
Generuje to następującą nieskończoną sekwencję:
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
jest pierwszym elementem. 1
jest najmniejszą liczbą jeszcze nie w sekwencji, ale jest sąsiadem 0
. Następna najmniejsza liczba to 2
, więc jest to drugi element sekwencji. Teraz pozostałe liczby są 1,3,4,5,6,...
, ale jako oba 1
i 3
są sąsiadami 2
, 4
jest trzecim członkiem sekwencji. Ponieważ 1
nie jest sąsiadem 4
, może w końcu zająć swoje miejsce jako czwarty element.
Zadanie
Napisz funkcję lub program w jak najmniejszej liczbie bajtów, która wygeneruje powyższą sekwencję.
Możesz
- wypisuje sekwencję bez końca,
- weź wejście i zwróć element sekwencji, lub
- weź wejście i zwróć pierwsze elementów sekwencji.
Zarówno indeksowanie zerowe, jak i jednoindeksowe jest w porządku, jeśli wybierzesz jedną z dwóch ostatnich opcji.
Nie musisz przestrzegać powyższego algorytmu, każda metoda, która wytwarza tę samą sekwencję, jest w porządku.
Inspirowana Code Code najlepsza permutacja . Okazuje się, że to A277618 .
* Zero ma dosłownie tylko jednego sąsiada i tak naprawdę go to nie obchodzi.