Napisz program lub funkcję, która przy n n 1 zwraca liczbę rozwiązań do ± 1 ± 2 ± 3 ± ... ± n = 0.
Dla n = 6 nie ma rozwiązań, więc odpowiedź wynosi 0. Dla n = 4 są dwa rozwiązania, więc odpowiedź to 2 (dwa rozwiązania to 1 - 2 - 3 + 4 = -1 + 2 + 3 - 4 = 0).
To jest sekwencja OEIS A063865 . Niektóre przykładowe dane wejściowe / wyjściowe to:
n a(n)
1 0
2 0
3 2
4 2
5 0
6 0
7 8
8 14
9 0
10 0
11 70
12 124
13 0
14 0
15 722
16 1314
Najkrótszy kod w bajtach wygrywa.
code-golf
math
arithmetic
orlp
źródło
źródło
Odpowiedzi:
JavaScript (ES6), 35 bajtów
Zapisano 1 bajt dzięki @tsh
Wypróbuj online!
źródło
Wolfram Language (Mathematica) , 33 bajty
Zlicza
n
-tuki 1 i -1, których iloczyn skalarnyRange[n]
to 0.Wypróbuj online!
źródło
Haskell , 42 bajty
Wypróbuj online!
Jest to
21 bajt krótszy niż jakakolwiek funkcja rekurencyjna, którą mógłbym napisać.źródło
05AB1E , 10 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
O_O
...C (gcc),
45625250 bajtówPort Kevin Cruijssen Javy 8 odpowiedzi .
Wypróbuj online tutaj .
Zauważ, że z powodu ulepszeń sugerowanych w komentarzach, kod wywołuje niezdefiniowane zachowanie do tego stopnia, że nie działa po skompilowaniu z clang.
Dzięki etenowi za grę w golfa 3 bajty. Podziękowania dla Kevina Cruijssena za grę w golfa jeszcze 10 bajtów. Dzięki Christoph za grę w golfa kolejne 2 bajty.
Wersja bez golfa:
źródło
r?0:1
je!r
. 42 bajtyr
, co jest niedozwolone.n=
nie jest konieczne, albo:f(n,r){n=n?f(n-1,r+n)+f(n-1,r-n):!r;}F(n){f(n,0);}
.-x = ~x+1
i dlatego~x = -x-1
.05AB1E ,
98 bajtówDzięki Emignie za uratowanie bajtu!
Kod:
Wykorzystuje kodowanie 05AB1E . Wypróbuj online!
Wyjaśnienie
źródło
MATL ,
1413 bajtówDzięki @Giuseppe za uratowanie 1 bajtu!
Wypróbuj online! Lub sprawdź wszystkie przypadki testowe .
Wyjaśnienie
Rozważ
n = 3
jako przykład. Stos jest pokazany do góry nogami, to znaczy najnowszy pojawia się poniżej.źródło
Galaretka , 8 bajtów
Wypróbuj online!
Jak to działa
źródło
Python 2, 74 bajty
Więcej zabawy, bezpośrednie obliczanie funkcji generujących.
źródło
Oktawa (z pakietem komunikacyjnym), 39 bajtów
Wypróbuj online!
Wyjaśnienie:
Weź zakres 0 ... n ^ 2-1 i przekonwertuj go na binarny. Daje to macierz ze wszystkimi kombinacjami 0 i 1 . Pomnóż przez 2 i odejmij 1, aby uzyskać macierz ze wszystkimi kombinacjami -1 i +1 .
Weź iloczyn skalarny z zakresem 1 ... n, aby uzyskać wszystkie kombinacje ± 1 ± 2 ... ± n . Policz, ile wynosi zero.
Zasadniczo ta sama rzecz, ta sama liczba bajtów:
źródło
APL (Dyalog) ,
3122 bajtów9 bajtów zapisanych dzięki @ H.PWiz
Wypróbuj online!
źródło
Python 2 i 3, 50 bajtów
Podejście rekurencyjne, jak większość odpowiedzi:
Wypróbuj online
Podwójne wywołanie rekurencyjne zajmuje zbyt dużo bajtów ... Prawdopodobnie istnieje sposób na uproszczenie.
źródło
Java 8,
727170 bajtówPort odpowiedzi JavaScript (ES6) @Arnauld .
-2 bajty dzięki @ OlivierGrégoire .
Wypróbuj online.
Wyjaśnienie:
źródło
Haskell , 55 bajtów
Proste podejście do obliczania wszystkich tych sum i sprawdzania, ile z nich jest równe zero.
Wypróbuj online!
EDYCJA: @ H.PWiz ma krótsze i bardziej eleganckie rozwiązanie za pomocą
mapM
!źródło
GrzmotnąćNarzędzia + GNU, 63 bajty
Bash prawdopodobnie lepiej radzi sobie z funkcjami rekurencyjnymi, ale nie mogę się oprzeć tego rodzaju potworom
eval
/ escape / ekspansji:Wypróbuj online!
Aktualizacja: Nie sądzę, że bash może lepiej działać z funkcjami rekurencyjnymi. To najlepsze, co mogłem zrobić z wynikiem 90 .
eval
to jest piekło.źródło
Brachylog , 12 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
Oktawa , 42 bajty
Wypróbuj online!
źródło
J , 32 bajty
Wypróbuj online!
Z pewnością jest dużo miejsca na grę w golfa. Nastąpi wyjaśnienie.
źródło
Haskell , 41 bajtów
Wypróbuj online!
źródło
0^abs k
.Galaretka , 10 bajtów
Wypróbuj online!
źródło
Perl 5 ,
-p
35 bajtówWypróbuj online!
źródło
Pari / GP , 30 bajtów
Wypróbuj online!
źródło
Prolog (SWI) , 99 bajtów
Wypróbuj online!
źródło
Pyth,
1413 bajtówWypróbuj tutaj
Wyjaśnienie
źródło
CJam , 25 bajtów
Wypróbuj online!
Jest to dość bezpośrednie tłumaczenie rozwiązania 05AB1E @ emigna. Z pewnością jest to gra w golfa.
źródło
Stax , 9 bajtów
Uruchom i debuguj
Jedna z najkrótszych odpowiedzi do tej poryjaką pokonała Jelly.Wydaje mi się, że jawne sprawdzenie, które znaki sumują się do zera, nie jest bardzo golfowe, więc zamiast tego biorę zestaw i sprawdzam, ile zestawów w zestawie ma sumę połowy n-tej liczby trójkątnej. Ta metoda, co nie dziwi, ma tę samą złożoność czasową, co sprawdzenie, które znaki sumują się do zera.
Odpowiednik ASCII:
źródło
Pyth , 10 bajtów
Wypróbuj online. Ewentualnie sprawdź wszystkie przypadki testowe jednocześnie .
Wyjaśnienie:
źródło
J , 28 bajtów
Używa innej definicji z OEIS gdzie
a(n) = coefficient of x^(n(n+1)/4) in Product_{k=1..n} (1+x^k) if n = 0 or 3 mod 4 else a(n) = 0
.Wypróbuj online!
Wyjaśnienie
źródło
Łuska , 9 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
Gol> <> , 26 bajtów
Wypróbuj online! lub Uruchom testy od 1 do 16!
Jak to działa
źródło