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 ...
0jest pierwszym elementem. 1jest 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 1i 3są sąsiadami 2, 4jest trzecim członkiem sekwencji. Ponieważ 1nie 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.