Waszym wyzwaniem jest dziś wyprowadzenie danego terminu z wyliczenia wszystkich liczb całkowitych. Sekwencja jest następująca: Jeśli mamy funkcję indeksowaną przez zero, która generuje sekwencję f(n)
i ceil(x)
jest funkcją pułapu, to f(0) = 0
; abs(f(n)) = ceil(n/2)
; sign(f(n))
jest dodatni, gdy n
i ceil(n/2)
są nieparzyste lub oba nieparzyste.
Aby zrozumieć tę sekwencję, pierwsze kilka terminów jest następujących: 0 1 -1 -2 2 3 -3 -4 4 5 -5 -6 6 7 -7...
Twoim zadaniem jest napisanie programu, który pobierze liczbę całkowitą n
i wyświetli n
th termin ciągu. Dane wejściowe mogą mieć tylko indeks 0 lub 1.
Przypadki testowe (indeksowane 0):
0 => 0
1 => 1
2 => -1
3 => -2
4 => 2
5 => 3
To jest golf golfowy , wygrywa najmniej bajtów!
Odpowiedzi:
SOGL V0.12 ,
86 bajtówWypróbuj tutaj! lub wypróbuj pierwsze kilka liczb (nieco zmienione, aby działało)
0-indeksowane.
Wyjaśnienie:
Lub prościej:
źródło
».»
jestem na telefonieI».»⌡±
.Python 2 ,
2624 bajtówWypróbuj online!
źródło
-~-(x&2)
ostatecznego mianownika.JavaScript (ES6), 18 bajtów
1-indeksowany.
Próbny
Pokaż fragment kodu
źródło
C, 25 bajtów
źródło
f(n){n=~n/2*~-(n&2);}
gcc -O0
ponieważ x86-64 kompiluje wersję @ cleblanc do instrukcji, które powodują pozostawienie wyniku mnożeniaeax
( godbolt.org/g/dztKPV ), ale wtedy byłaby tox86-64 gcc -O0
odpowiedź, a nie odpowiedź C. Nie głosuję w górę odpowiedzi C, które łamią się z włączoną optymalizacją, szczególnie nie to głupie ostatnie wyrażenie jako bzdura zwracanej wartości. Nawet jeśli tak działa gcc, to nie tak działa C.Haskell , 26 bajtów
Wypróbuj online!
Inne odpowiedzi Haskella wydają się nadmiernie komplikować… ^^
źródło
Pyke , 6 bajtów
Wypróbuj tutaj!
Wykorzystuje podejście dzaima ...
BeatsTies Jelly!Wyjaśnienie
Hex kodowane bajtów równoważne to:
68 65 51 65 56 5F
.źródło
Galaretka , 6 bajtów
Wypróbuj online!
Wykorzystuje algorytm dzaima.
-1 dzięki Jonathan Allan .
źródło
Python 2 , 21 bajtów
Wypróbuj online!
źródło
Mathematica, 24 bajty
-14 bajtów od @Misha Lavrov
źródło
Boole
iOddQ
powoduje konwersję liczb nieparzystych na 1, a parzystych na 0, ale tutaj nie jest to potrzebne: moc -1 daje i tak właściwą odpowiedź na wszystkie liczby nieparzyste. Możesz więc ograniczyć ten krok do(-1)^Tr@{#,s}
lub po prostu(-1)^(#+s)
.Haskell ,
254342 bajtówWypróbuj online! 1-indeksowany.
Edycja: poprzednia wersja miała znaki w niewłaściwej kolejności, dzięki @ Potato44 za wskazanie. Naprawiono dla 18 bajtów ...
Edycja 2: Dzięki BMO za -1 bajt!
źródło
Python 3 , 29 bajtów
Wypróbuj online!
źródło
(-1)**(n%4>1)
to dość skomplikowany sposób pisania(1-(n&2))
;)Pyth , 9 bajtów
Wypróbuj tutaj!
Wykorzystuje podejście dzaima .
źródło
Haskell, 36 bajtów
Wypróbuj online!
źródło
05AB1E , 6 bajtów
Wypróbuj online!
Wykorzystuje algorytm dzaima.
źródło
Partia, 29 bajtów
źródło
JavaScript (ES6), 18 bajtów
0-indeksowane.
źródło
JavaScript, 17 bajtów
Pokaż fragment kodu
Ten jest zindeksowany. To całkowicie bitowe oszustwo.
źródło
Sześciennie , 23 bajty
(1-indeksowany)
Wypróbuj online!
Główną trudnością podczas pisania kodu w Cubically są:
To rozwiązanie oblicza
gdzie
/
oznacza dzielenie całkowite. Potrzebuje tylko 1 zmiennej tymczasowej oraz stałych 1 i 2.Wyjaśnienie:
źródło
TI-Basic (TI-84 Plus CE), 20 bajtów
Pełny program, który nazywa się jak
5:prgmNAME
.TI-Basic jest tokenizowanym językiem , wszystkie użyte tutaj tokeny mają jeden bajt, z wyjątkiem
remainder(
dwóch.‾
reprezentuje token regatywny, który jest wpisywany za pomocą (-)klawisza.Przykłady:
Wyjaśnienie:
Ta sama formuła co funkcja Y-var:
źródło
dc , 16 bajtów
Jestem pewien, że istnieje sposób na skrócenie 0..1 do -1..1 w DC, ale na razie nie ma pomysłów.
Wypróbuj online!
źródło
Java 8, 15 bajtów
EDYCJA: Czy Java jest naprawdę najkrótszym językiem nie golfowym ?! o.Ô
Wyjaśnienie:
Wypróbuj tutaj.
Wykorzystam poniższą tabelę jako odniesienie do tego, co się dzieje.
~n
jest równy-n-1
.~n/2
spowoduje to sekwencję0,-1,-1,-2,-2,-3,-3,-4,-4,-5,-5,...
n&2
spowoduje albo,0
albo2
, w sekwencji0,0,2,2,0,0,2,2,0,0,2,...
~-x
jest równe(x-1)
, więc~-(n&2)
(((n&2)-1)
) powoduje sekwencję-1,-1,1,1,-1,-1,1,1,-1,-1,1,...
~n/2
i~-(n&2)
daje prawidłową sekwencję zadaną w wyzwaniu:0,1,-1,-2,2,3,-3,-4,4,5,-5,...
Tabela przeglądowa:
źródło
Brain-Flak ,
86747270 bajtówWypróbuj online!
Wyjaśnienie
Ten kod składa się z dwóch części. Pierwsza część
robi saldo obliczeń. To określa
ceil(n/2)
i czy negować wyjście.Aby wyjaśnić, jak to działa, najpierw wyjaśnię, jak można to obliczyć
ceil(n/2)
. Można to zrobić za pomocą następującego koduOdlicza się od n za każdym razem, gdy wykonuje not (
([{}]())
) na liczniku i dodaje licznik do wyniku. Ponieważ licznik wynosi zero, czas zwiększa się tylko co drugi bieg, zaczynając od pierwszego.Teraz chcę również obliczyć znak naszych wyników. Aby to zrobić, uruchamiamy kolejny licznik. Ten licznik zmienia stan tylko wtedy, gdy pierwszy licznik jest wyłączony. W ten sposób otrzymujemy pożądany wzór. Kładziemy te dwa żetony na stosie, aby ułatwić ich przenoszenie, gdy nadejdzie czas.
Teraz, kiedy zakończymy obliczenia, nasz stos będzie wyglądał następująco
Musimy więc popracować, aby uzyskać zamierzony efekt w drugiej części.
źródło
Perl 5 , 32 + 1 (
-p
) = 33 bajtyWypróbuj online!
źródło
Proton , 23 bajty
Wypróbuj online!
Rozwiązanie Port of Halvard .
Proton , 23 bajty
Wypróbuj online!
Rozwiązanie Port of Leaky .
Nieco więcej Protonic, 24 bajtów:
źródło
QBIC ,
2726 bajtówWyjaśnienie
źródło
Clojure 122 bajty
Pełen werwy, nawet podczas gry w golfa. Idę na głosowanie na współczucie tutaj ... :-)
Gra w golfa:
Nie golfowany:
źródło
Excel VBA 32-bit,
3937 bajtówAnonimowa funkcja bezpośredniego okna VBE, która przenosi dane wejściowe z komórki
A1
i dane wyjściowe do bezpośredniego okna VBEOgraniczony do wersji 32-bitowej, ponieważ
A^B
nie jest prawidłowy w wersji 64-bitowej (A ^B
jest tak blisko, jak to możliwe)źródło
(-1)
i^[Int
potrzebne?Julia 0.6 , 16 bajtów
To tylko rozwiązanie Java, ale potrzebuję
÷
podziału na liczby całkowite.Wypróbuj online!
źródło