Wprowadzenie
Znak pewnej liczby jest albo +
, albo -
dla każdej niezerowej liczby całkowitej. Samo zero jest bez znaku ( +0
jest takie samo jak -0
). W poniższej sekwencji będziemy na przemian znak dodatni , zero i znak ujemny . Sekwencja zaczyna się od 1
, więc piszemy 1
ze znakiem dodatnim, zerem (ten jest dziwny, ale po prostu mnożymy liczbę przez 0) i znakiem ujemnym:
1, 0, -1
Następna liczba to 2
i robimy to samo ponownie:
2, 0, -2
Sekwencja ostatecznie jest:
1, 0, -1, 2, 0, -2, 3, 0, -3, 4, 0, -4, 5, 0, -5, 6, 0, -6, 7, 0, -7, ...
Lub bardziej czytelna forma:
a(0) = 1
a(1) = 0
a(2) = -1
a(3) = 2
a(4) = 0
a(5) = -2
a(6) = 3
a(7) = 0
a(8) = -3
a(9) = 4
...
Zadanie
Biorąc pod uwagę nieujemną liczbę całkowitą n , wyślij n- ty składnik powyższej sekwencji. Możesz wybrać, czy używasz wersji z indeksem zerowym, czy z jedną indeksowaną .
Przypadki testowe:
Zero indeksowane:
a(0) = 1
a(11) = -4
a(76) = 0
a(134) = -45
a(296) = -99
Lub jeśli wolisz jeden indeksowany:
a(1) = 1
a(12) = -4
a(77) = 0
a(135) = -45
a(297) = -99
To jest golf golfowy , więc wygrywanie z najmniejszą liczbą bajtów wygrywa!
[0, 0, 0, -1, 0, 1...
1
.Odpowiedzi:
Galaretka, 7 bajtów
Zero indeksowane. Przypadki testowe tutaj.
Wyjaśnienie:
źródło
JavaScript ES6, 18 bajtów
Okazało się, że jest bardzo podobny do odpowiedzi @ LeakyNun, ale widziałem go dopiero po opublikowaniu mojej.
Wyjaśnienie i nieprzygotowany
-~
jest skrótemMath.ceil
lub zaokrąglaniem w górę:Pokaż fragment kodu
źródło
Math.ceil
i-~
są różne;Math.ceil(1) == 1
mając na uwadze, że-~1 == 2
n=>~(n/3)*~-(n%3)
MarioLANG,
9381 bajtówz jednym indeksem
Wypróbuj online
Objaśnienie:
zaczynamy od założenia
które nam dają
następnie zmniejszamy lewy bajt i zwiększamy prawy bajt o
kończymy z
następnie konfigurujemy pętlę
pętla będzie działać, dopóki pamięć nie będzie wyglądać
musimy jedynie przedstawić wynik
źródło
;(
i>:(
. Chociaż dwa razy[<:
można uznać za nieco szczęśliwy. ; PPython 2, 24 bajty
Pełny program:
źródło
MATL,
1512 bajtówKorzysta z jednego indeksowania.
Wypróbuj online! lub zweryfikuj przypadki testowe
Wyjaśnienie:
źródło
Q3/Xk-1:1G_)*
może działać lepiej. Prawdopodobnie można go jeszcze bardziej zmodyfikować w celu indeksowania 1.Haskell, 27 bajtów
Nieco bardziej interesujące rozwiązanie 28-bajtowe:
(Oba są
0
zindeksowane)źródło
MATL , 8 bajtów
Wynik jest oparty na 1.
Wypróbuj online!
Wyjaśnienie
To tworzy tablicę 2D
a następnie używa indeksowania liniowego w celu wyodrębnienia pożądanego terminu. Liniowe środki indeksujące indeks w dół, a następnie poprzecznie (to w powyższej tablicy się pierwszymi wpisami w celu liniowych
1
,0
,-1
,2
,0
, ...)źródło
Perl 5, 22 bajtów
21 plus jeden za
-p
:Wykorzystuje indeksowanie 1.
Wyjaśnienie:
-p
ustawia zmienną$_
równą wejściu. Następnie kod ustawia go jako równy$_%3
th elementu podzielonemu przez 3 z listy opartej na 0(-$_,$_+2)
(gdzie%
jest modulo). Zauważ, że jeśli$_%3
jest dwa, to nie ma takiego elementu, a kolejne dzielenie przez 3 oznacza niezdefiniowane na 0,-p
a następnie drukuje$_
.źródło
Bash,
2825 bajtówźródło
Perl 6 ,
2623 bajtów(Krótszy został przetłumaczony z innych odpowiedzi)
Objaśnienie (pierwszego):
Test:
źródło
J,
1915 bajtówPrawdopodobnie trzeba zagrać w golfa dalej ...
1-indeksowany.
Nie golfowany:
Gdzie
>>
oznacza wejście (STDIN) i<<
oznacza wyjście (STDOUT).źródło
Pyke,
87 bajtów (stara wersja)Wypróbuj tutaj! - Pamiętaj, że link prawdopodobnie nie potrwa długo
Najnowsza wersja
Wypróbuj tutaj!
źródło
J, 27 bajtów
Nie jestem najbardziej golfistą, ale podoba mi się to bardziej, ponieważ wykorzystuje program.
Oto rozkład drzewa:
Jest to bardzo podobne do odpowiedzi J Kenny'ego, ponieważ wybiera wielkość i znak, ale różni się tym, że używam programu do wyboru znaku.
źródło
MATL, 8 bajtów
To rozwiązanie wykorzystuje indeksowanie 1 do sekwencji.
Wypróbuj online
Zmodyfikowana wersja pokazująca wszystkie przypadki testowe
Wyjaśnienie
źródło
Pyth, 10 bajtów
Wypróbuj online!
Wyjaśnienie:
Uwaga: założyłem sekwencję zerowaną.
źródło
*@(1ZtZ)%Q3h/Q3
(1ZtZ)
=-L1 2
Właściwie 10 bajtów
Wypróbuj online!
Wyjaśnienie:
źródło
05AB1E, 7 bajtów
Kod:
Wyjaśniono:
źródło
GeoGebra, 44 bajty
gdzie
n
jest zindeksowany.Wyjaśnienie:
Nie jest konieczne generowanie wszystkich trojaczków
{n, 0, -n}
, ale jest ono krótsze niż pisanieceil(n/3)
lub coś w tym rodzaju. Pamiętaj, żen
należy zdefiniować, aby utworzyć ten obiekt (jeśli nie jest zdefiniowany w momencie jego uruchomienia, GeoGebra wyświetli monit o utworzenie suwakan
).źródło
n
, wprowadź coś takiegon=297
(da ci to suwak, który jest ładnie skonfigurowany). Następnie wklej formułę do pola Input, które powinno znajdować się poniżejn
. (Upewnij się, że naciśniesz return;) Formuła powinna oceniać don
th-tego ciągu sekwencji i powinna się zmieniać po przesunięciu suwaka.Labirynt ,
171514 bajtówZaoszczędzono 3 bajty, korzystając z pomysłu Sok
1-(n%3)
zamiast~(n%3-2)
.Program kończy się błędem (dzielenie przez zero), ale komunikat o błędzie trafia do STDERR.
Wypróbuj online!
Wyjaśnienie
Program jest całkowicie liniowy, chociaż część kodu jest wykonywana na końcu w odwrotnej kolejności.
Wskaźnik instrukcji trafia teraz w ślepy zaułek i odwraca się, więc zaczyna wykonywać kod od końca:
źródło
Erlang, 40 bajtów
Niestety Erlang nie ma operatora modulo „%”, a „rem” wymaga spacji, nawet przed 3.
źródło
Sześciokąt , 25 bajtów
Lub w formacie niezminimalizowanym:
Wypróbuj online!
Mój pierwszy wypad do Hexagony, więc jestem pewien, że nie zrobiłem tego tak blisko, jak to możliwe ...
Oblicza
-(n%3 - 1)
na jednej krawędzi pamięci,n/3 + 1
na sąsiedniej, a następnie mnoży je razem.źródło
R, 28 bajtów
Wygląda na to, że jest to odmiana większości odpowiedzi tutaj. Zero oparty.
Zaletą jest to, że obsługuje wiele wejść
Początkowo chciałem wykonać następujące czynności, ale nie mogłem usunąć dodatkowych bajtów.
Używa
rbind
dodawania zer i negatywów do zakresu 1,n
a następnie zwraca tenn
termin (oparty na jednym).źródło
Partia (Windows), 86 bajtów
Alternate.bat
Ten program jest uruchamiany tak, jak
Alternate.bat n
gdzien
jest numer, na który chcesz wywołać funkcję.źródło
APL, 12 znaków
0 3⊤
jest APLdivmod 3
.źródło
Java 7,
383736 bajtówMój pierwszy golf, bądź łagodny
Wypróbuj tutaj! (przypadki testowe w zestawie)
Edycja: miscounted, a także golfed się jeszcze jeden znak, zastępując
(-i%3+1)
z(1-i%3)
.źródło
return
i użyć lambda Java 8.Siatkówka, 45 bajtów
Wypróbuj online!
Zestaw testowy.
Pobiera dane wejściowe / wyjściowe w bazie dziesięciu. 1-indeksowany.
Jednoargumentowe wejście, wyjście dziesięcioosobowe, indeksowane 1: 40 bajtów
Wypróbuj online!
Zestaw testowy.
źródło
MATLAB / Octave, 27 bajtów
Tworzy to anonimową funkcję, którą można wywołać za pomocą
ans(n)
. To rozwiązanie wykorzystuje indeksowanie 1.Wszystkie przypadki testowe
źródło
Mathematica 26 bajtów
Z 4 bajtami zapisanymi dzięki Martinowi Enderowi.
Stosuje to samo podejście, co Suever.
źródło
Oktawa, 23 bajty
Bez modów ...
Wykorzystuje magię indeksowania 1.
Wyjaśnienie
Tworzy anonimową funkcję, która:
Po pomnożeniu otrzymamy macierz 3xn taką (dla n = 12):
Tworzenie
n
kolumn to przesada, ale jest to wygodna liczba, która z pewnością jest wystarczająco duża. Indeksowanie liniowe odlicza każdą kolumnę od lewej do prawej, więc element o indeksie liniowym4
będzie2
.Wszystkie przypadki testowe na ideone .
źródło
dc, 10
Wykorzystuje indeksowanie 1.
źródło