Schreiben Sie ein Programm oder eine Funktion, die bei n ≥ 1 die Anzahl der Lösungen auf ± 1 ± 2 ± 3 ± ... ± n = 0 zurückgibt.
Für n = 6 gibt es keine Lösungen, die Antwort ist 0. Für n = 4 gibt es zwei Lösungen, die Antwort ist 2 (die beiden Lösungen sind 1 - 2 - 3 + 4 = -1 + 2 + 3 - 4 = 0).
Dies ist die OEIS-Sequenz A063865 . Einige Beispiele für Ein- / Ausgänge sind:
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
Kürzester Code in Bytes gewinnt.
code-golf
math
arithmetic
orlp
quelle
quelle
Antworten:
JavaScript (ES6), 35 Byte
1 Byte dank @tsh gespeichert
Probieren Sie es online!
quelle
Wolfram Language (Mathematica) , 33 Byte
Zählt die
n
-Tupel von 1 und -1, deren Skalarprodukt mitRange[n]
0 ist.Probieren Sie es online!
quelle
Haskell , 42 Bytes
Probieren Sie es online!
Dies ist
21 Byte kürzer als jede rekursive Funktion, die ich schreiben könnte.quelle
05AB1E , 10 Bytes
Probieren Sie es online!
Erläuterung
quelle
O_O
...C (gcc),
45625250 BytesPort von Kevin Cruijssens Java 8- Antwort .
Probieren Sie es hier online aus .
Beachten Sie, dass der Code aufgrund der in den Kommentaren vorgeschlagenen Verbesserungen undefiniertes Verhalten erzeugt, sodass er beim Kompilieren mit Clang nicht mehr funktioniert.
Vielen Dank an Etene für das Golfen mit 3 Bytes. Vielen Dank an Kevin Cruijssen für das Golfen mit 10 weiteren Bytes. Vielen Dank an Christoph für die weiteren 2 Bytes.
Ungolfed-Version:
quelle
r?0:1
mit!r
. 42 Bytesr
, der nicht zulässig ist.n=
ist nicht erforderlich , entweder:f(n,r){n=n?f(n-1,r+n)+f(n-1,r-n):!r;}F(n){f(n,0);}
.-x = ~x+1
und daher~x = -x-1
.05AB1E ,
98 BytesDanke an Emigna für das Speichern eines Bytes!
Code:
Verwendet die 05AB1E- Codierung. Probieren Sie es online!
Erläuterung
quelle
MATL ,
1413 BytesVielen Dank an @ Giuseppe für das Speichern von 1 Byte!
Probieren Sie es online! Oder überprüfen Sie alle Testfälle .
Erläuterung
Betrachten Sie
n = 3
als Beispiel. Der Stapel wird verkehrt herum angezeigt, dh der neueste Stapel wird unten angezeigt.quelle
Gelee , 8 Bytes
Probieren Sie es online!
Wie es funktioniert
quelle
Python 2, 74 Bytes
Mehr Spaß beim Einreichen, direkte Berechnung der generierenden Funktionen.
quelle
Oktave (mit Kommunikationspaket), 39 Byte
Probieren Sie es online!
Erläuterung:
Nehmen Sie einen Bereich von 0 ... n ^ 2-1 und wandeln Sie ihn in Binär um. Dies ergibt eine Matrix mit allen Kombinationen von 0 und 1 . Mit 2 multiplizieren und 1 abziehen , um eine Matrix mit allen Kombinationen von -1 und +1 zu erhalten .
Nehmen Sie das Skalarprodukt mit einer Auswahl 1 ... n , um alle Kombinationen von ± 1 ± 2 ... ± n zu erhalten . Zählen Sie, wie viele Null sind.
Grundsätzlich das Gleiche, die gleiche Anzahl von Bytes:
quelle
APL (Dyalog) ,
3122 Bytes9 Bytes gespart dank @ H.PWiz
Probieren Sie es online!
quelle
Python 2 und 3, 50 Bytes
Rekursiver Ansatz wie die meisten Antworten:
Probieren Sie es online aus
Der doppelte rekursive Aufruf nimmt zu viele Bytes in Anspruch ... Es gibt wahrscheinlich eine Möglichkeit, ihn zu vereinfachen.
quelle
Java 8,
727170 BytesPortierung der Antwort von @Arnauld auf JavaScript (ES6) .
-2 Bytes dank @ OlivierGrégoire .
Probieren Sie es online aus.
Erläuterung:
quelle
Haskell , 55 Bytes
Ein einfacher Ansatz, alle diese Summen zu berechnen und zu überprüfen, wie viele Nullen sind.
Probieren Sie es online!
EDIT: @H.PWiz hat eine kürzere und wesentlich elegantere Lösung mit
mapM
!quelle
Bash + GNU-Dienstprogramme, 63 Bytes
Bash kann wahrscheinlich besser mit rekursiven Funktionen umgehen, aber ich kann dieser Art von
eval
/ Escape / Expansions-Monstrosität nicht widerstehen :Probieren Sie es online!
Update: Ich glaube nicht, dass Bash mit rekursiven Funktionen besser umgehen kann. Dies ist das Beste, was ich für eine Punktzahl von 90 tun konnte .
eval
zum Teufel ist es dann.quelle
Brachylog , 12 Bytes
Probieren Sie es online!
Erläuterung
quelle
Oktave , 42 Bytes
Probieren Sie es online!
quelle
J , 32 Bytes
Probieren Sie es online!
Es gibt sicherlich viel Platz zum Golfen. Eine Erklärung wird folgen.
quelle
Haskell , 41 Bytes
Probieren Sie es online!
quelle
0^abs k
.Gelee , 10 Bytes
Probieren Sie es online!
quelle
Perl 5 ,
-p
35 BytesProbieren Sie es online!
quelle
Pari / GP , 30 Bytes
Probieren Sie es online!
quelle
Prolog (SWI) , 99 Bytes
Probieren Sie es online!
quelle
Pyth,
1413 BytesProbieren Sie es hier aus
Erläuterung
quelle
CJam , 25 Bytes
Probieren Sie es online!
Dies ist eine ziemlich direkte Übersetzung von @ emignas 05AB1E-Lösung. Es ist auf jeden Fall golfen.
quelle
Stax , 9 Bytes
Führen Sie es aus und debuggen Sie es
Eine der kürzesten Antworten, die bishervon Jelly besiegt wurden.Ich bin der Meinung, dass das explizite Überprüfen der Summe der Vorzeichen mit Null nicht sehr schwierig ist. Stattdessen nehme ich den Powerset und überprüfe, wie viele Sätze im Powerset die Summe der Hälfte der n-ten Dreieckszahl haben. Diese Methode ist nicht überraschend zeitaufwändig wie die Überprüfung, welche Vorzeichen sich zu Null addieren.
ASCII-Äquivalent:
quelle
Pyth , 10 Bytes
Probieren Sie es online aus. Alternativ können Sie alle Testfälle auf einmal überprüfen .
Erklärung:
quelle
J , 28 Bytes
Verwendet die andere Definition von OEIS wo
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
.Probieren Sie es online!
Erläuterung
quelle
Schale , 9 Bytes
Probieren Sie es online!
Erläuterung
quelle
Gol> <> , 26 Bytes
Probieren Sie es online! oder Testfälle von 1 bis 16 ausführen!
Wie es funktioniert
quelle