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.
Odpowiedzi:
JavaScript (ES6), 13 bajtów
Zwraca ty ciąg sekwencji.n
Wypróbuj online!
W jaki sposób?
To oblicza:
źródło
Python 2 , 20 bajtów
Wypróbuj online!
źródło
MathGolf , 5 bajtów
Wypróbuj online!
Dobra symetria tutaj. Zwraca
nth
element sekwencji.Wyjaśnienie:
źródło
Galaretka , 5 bajtów
Wypróbuj online!
Go go gadżet ukryty wbudowany!
źródło
Wolfram Language (Mathematica) , 14 bajtów
Wypróbuj online!
Wyświetla n-tą liczbę całkowitą o indeksie zerowym w sekwencji.
źródło
R ,
252321 bajtów-2 bajty dzięki Jo King
Wypróbuj online!
Wyprowadza
nth
element po kolei.źródło
dzaima / APL , 9 bajtów
Odpowiedź Portu Arnaulda.
Wypróbuj online!
źródło
Pip , 14 bajtów
Lub wzór, którego wszyscy używają, na 12 bajtów :
źródło
Common Lisp , 67 bajtów
Wypróbuj online!
źródło
(defun x(n)(+(mod(+ n 2)5)(- n 2)))
, lub(lambda(n)(+(mod(+ n 2)5)(- n 2)))
wystarczy: zwrócenie n-tego terminu zamiast sekwencji terminów.Japt , 8 bajtów
Japt Interpreter
Prosty port odpowiedzi Javascript Arnaulda. Połączona wersja przechodzi przez pierwsze n elementów, ale jeśli
-m
flaga zostanie usunięta, nadal jest ważna i zamiast tego drukuje n-ty element.Dla porównania, oto naiwna wersja, która implementuje algorytm podany w pytaniu:
Wyjaśnię to:
źródło
05AB1E , 5 bajtów
Port odpowiedzi MathGolf @ JoKing .
Wypróbuj online lub sprawdź pierwsze 100 liczb .
Wyjaśnienie:
źródło
Czysty , 31 bajtów
Formuła, której wszyscy używają.
Wypróbuj online!
Czysty , 80 bajtów
Moje początkowe podejście, zwracanie pierwszych
n
elementów.Wypróbuj online!
źródło
Pari / GP , 14 bajtów
Wypróbuj online!
Pari / GP , 14 bajtów
Wypróbuj online!
źródło
J , 30 bajtów
Wypróbuj online!
Zwraca listę pierwszych
n
liczbTo rozwiązanie oczywiście nie konkuruje, ale chciałem wypróbować metodę opartą na macierzy.
Wyjaśnienie:
Argumentem jest
n
2 ,]
- dołącz 2 do wejścia()@
- i użyj tej listy do:i.
- utwórz macierzn
x 2 o liczbach z zakresu 0..2n-1:4 0$~]
-~
odwraca argumenty, więc jest] 4 $ 0 - tworzy macierzn
x 2 powtarzając 4 0-
odejmij drugą macierz od pierwszej, tak aby pierwsza kolumna była „opóźniona” o 2 pozycje_5,./\
przemierzaj macierz w nienakładających się grupach po 5 rzędów i zszyj kolumny[:,
zepsuć całą tablicę2}.
- upuść pierwsze 2 cyfry{.
weź pierwszen
liczbyJ , 9 bajtów
Wypróbuj online!
Zwraca
n
element th.Odpowiedź Portu Arnaulda
źródło
K (ngn / k) , 12 bajtów
Wypróbuj online!
źródło
-2+x+
->x-2-
Pepe , 65 bajtów
Wypróbuj online!
Odpowiedź Portu Kinga.
źródło
kod maszynowy x86, 16 bajtów
Montaż:
Wypróbuj online!
źródło
Czerwony , 26 bajtów
Wypróbuj online!
Odpowiedź Portu Arnaulda
źródło
Excel, 17 bajtów
Nic mądrego. Implementuje wspólną formułę.
źródło
C (gcc) POSIX, 20 bajtów
Wypróbuj online!
źródło
QBasic, 30 bajtów
Daje indeksowany 0 wpis listy na poz
x
.Wypróbuj online! (Zauważ, że
?
został rozwinięty,PRINT
ponieważ w przeciwnym razie interpreter zawiedzie ...)źródło
C # (interaktywny kompilator Visual C #) , 14 bajtów
Wypróbuj online!
Ta sama logika, co inne odpowiedzi: 1 2
źródło
R , 25 bajtów
Wypróbuj online!
Port odpowiedzi Roberta S. (i tylko przez dodanie zaledwie 4 bajtów) dzięki doskonałej obsłudze R w wektorach.
Zwraca pierwsze n wartości.
źródło
dc , 9 bajtów
Wypróbuj online!
Ta sama metoda jak większość. Duplikuj górę stosu, dodaj 2, mod 5, dodaj do oryginału (powielono wcześniej), odejmij 2, wydrukuj.
źródło
TI-BASIC, 11 bajtów
Ans
Prosty port innych odpowiedzi.
Uwaga: TI-BASIC jest językiem tokenizowanym. Liczba znaków nie jest równa liczbie bajtów.
źródło