Die Summe der Quadrate der ersten zehn natürlichen Zahlen ist
Das Quadrat der Summe der ersten zehn natürlichen Zahlen ist,
Daher ist die Differenz zwischen der Summe der Quadrate der ersten zehn natürlichen Zahlen und dem Quadrat der Summe
Finden Sie für eine gegebene Eingabe n die Differenz zwischen der Summe der Quadrate der ersten n natürlichen Zahlen und dem Quadrat der Summe.
Testfälle
1 => 0
2 => 4
3 => 22
10 => 2640
24 => 85100
100 => 25164150
Diese Herausforderung wurde erstmals bei Project Euler # 6 angekündigt .
Gewinnkriterien
Es gibt keine Regeln für das Verhalten bei negativer oder Null-Eingabe.
Die kürzeste Antwort gewinnt.
n
?Antworten:
Gelee ,
54 BytesProbieren Sie es online!
Wie?
Implementiert ...∑ni=2(i2(i−1))
quelle
Python 3 ,
2827 Bytes-1 danke an xnor
Probieren Sie es online!
Implementiertn(n−1)(n+1)(3n+2)/12
Python 2,
2928 Bytes:lambda n:(n**3-n)*(3*n+2)/12
quelle
n*~-n**2*
oder rasieren(n**3-n)*
.APL (Dyalog Unicode) , 10 Bytes
Probieren Sie es online!
Wie es funktioniert
Verwendet die Tatsache, dass "Quadrat der Summe" gleich "Summe der Würfel" ist.
quelle
(1⊥⍳×⍳×1-⍨⍳)10
.TI-Basic (TI-83-Serie),
12 bis11 ByteAnbaugeräte( n22) ( 12+ 13 n) . Nimmt Eingaben auf
Ans
: Zum Beispiel ausführen10:prgmX
, um das Ergebnis für die Eingabe zu berechnen10
.quelle
nCr
!Brain-Flak ,
74726864 BytesProbieren Sie es online!
Ganz einfach mit ein paar kniffligen Schichten. Hoffentlich findet jemand weitere Tricks, um dies noch kürzer zu machen.
quelle
Kohle ,
1210 BytesProbieren Sie es online! Link ist eine ausführliche Version des Codes. Erklärung:( ∑n1x )2= ∑n1x3 so ( ∑n1x )2- ∑n1x2= ∑n1( x3- x2) = ∑n1( x - 1 ) x2= ∑n - 10x ( x + 1 )2 .
quelle
Perl 6 , 22 Bytes
Probieren Sie es online!
Verwendet die Konstruktion∑ni = 1( i2( I - 1 ) )
quelle
Japt
-x
,9854 BytesVersuch es
Erläuterung
quelle
JavaScript, 20 Bytes
Probieren Sie es online aus
quelle
APL (Dyalog), 17 Bytes
(Viel länger) Port of Jonathan Allans Jelly-Antwort.
Probieren Sie es online!
quelle
+/¯1↓⍳×1⌽⍳×⍳
APL (Dyalog) , 16 Bytes
Probieren Sie es online!
quelle
(+/×⍨)
→1⊥×⍨
nach tipp .⍳
Innere(×⍨1⊥⍳)-⍳+.×⍳
Mathematica,
2117 Bytes-4 Bytes dank Alephalpha .
Funktion pur. Nimmt eine Ganzzahl als Eingabe und gibt eine Ganzzahl als Ausgabe zurück. Implementiert nur das Polynom, da
Sum
s,Range
s,Tr
s usw. viele Bytes beanspruchen.quelle
(3#+2)(#^3-#)/12&
#.(#^2-#)&@*Range
Implementiert eine andere gängige Lösung. (Aber es ist auch 17 Bytes.) Und wir können den naiven Algorithmus in 18 Bytes implementieren:Tr@#^2-#.#&@*Range
.Java (JDK) , 23 Byte
Probieren Sie es online!
quelle
Gleichstrom , 16 Bytes
Probieren Sie es online!
quelle
05AB1E , 8 Bytes
Erläuterung:
Probieren Sie es online!
quelle
LDnOsOn-
war auch mein erster versuch.C, C ++,
464037 Bytes (#define),504746 Bytes (function)-1 Byte dank Zacharý
-11 bytes dank ceilingcat
Makroversion:
Funktionsversion:
Diese Zeilen basieren auf diesen 2 Formeln:
Summe der Zahlen zwischen 1 und n =
n*(n+1)/2
Summe der Quadrate zwischen 1 und n =
n*(n+1)*(2n+1)/6
Die Formel für die Antwort lautet also einfach
(n*(n+1)/2) * (n*(n+1)/2) - n*(n+1)*(2n+1)/6
Und jetzt, um die Byteanzahl zu "optimieren", brechen wir die Klammern und verschieben die Daten, während das Testen immer das gleiche Ergebnis liefert
(n*(n+1)/2) * (n*(n+1)/2) - n*(n+1)*(2n+1)/6
=>n*(n+1)/2*n*(n+1)/2 - n*(n+1)*(2n+1)/6
=>n*(n+1)*n*(n+1)/4 - n*(n+1)*(2n+1)/6
Beachten Sie das Muster
p = n*n+1 = n*n+n
, also deklarieren wir in der Funktion eine andere Variableint p = n*n+n
und es gibt:p*p/4 - p*(2n+1)/6
Für
p*(p/4-(2*n+1)/6)
und son*(n+1)*(n*(n+1)/4 - (2n+1)/6)
funktioniert es nur die Hälfte der Zeit, und ich vermute, dass die Ganzzahldivision die Ursache ist (f(3)
24 statt 22,f(24)
85200 statt 85100, also können wir die Formel des Makros nicht so faktorisieren, auch wenn es mathematisch so ist das Gleiche.Sowohl die Makro- als auch die Funktionsversion sind hier aufgrund der Makrosubstitution:
F (3) ergibt
3*3*(3+1)*(3+1)/4-3*(3+1)*(2*3+1)/6 = 22
F (5-2) ergibt
5-2*5-2*(5-2+1)*(5-2+1)/4-5-2*(5-2+1)*(2*5-2+1)/6 = -30
und versauen mit dem Operator Vorrang. Die Funktionsversion hat dieses Problem nicht
quelle
n
mit(n)
. AuchF(n) n
=>F(n)n
unabhängig.return p*p/4-p*(n-~n)/6
zu ordnenreturn(p/4-(n-~n)/6)*p
.JavaScript (ES6), 22 Byte
Probieren Sie es online!
quelle
Pyth, 7 Bytes
Probieren Sie es hier online aus .
Verwendet die Formel in Neils Antwort .
quelle
SNOBOL4 (CSNOBOL4) ,
70 bis69 ByteProbieren Sie es online!
quelle
Pari / GP , 21 Bytes
Probieren Sie es online!
quelle
05AB1E , 6 Bytes
Probieren Sie es online!
Erläuterung
Einige andere Versionen mit derselben Byteanzahl:
L<ān*O
Ln.āPO
L¦nā*O
quelle
R , 28 Bytes
Probieren Sie es online!
quelle
sum(x<-1:scan())^2-sum(x^2)
für -1MathGolf , 6 Bytes
Probieren Sie es online!
Erläuterung:
quelle
Clojure , 58 BytesProbieren Sie es online!
Edit: Ich habe die Frage falsch verstanden
Clojure ,
55, 35 BytesProbieren Sie es online!
quelle
(apply +
ist kürzer als(reduce +
.cQuents ,
1715 BytesProbieren Sie es online!
Erläuterung
quelle
APL (NARS), 13 Zeichen, 26 Byte
benutze die Formel Sum'w = 1..n '(w w (w-1)) möglich ich habe dasselbe geschrieben wie einige andere geschrieben + oder - als "1⊥⍳ × ⍳ × ⍳-1"; Prüfung:
quelle
Stax , 4 Bytes
Führen Sie es aus und debuggen Sie es
Fügen Sie für alle positiven
k
ganzen Zahlen bis zur Eingabe hinzuk^2 * (k-1)
.quelle
QBASIC,
4544 BytesRein rechnen spart 1 Byte!
Versuchen Sie das online!
Vorherige, schleifenbasierte Antwort
Probieren Sie es online!
Beachten Sie, dass die REPL etwas erweitert ist, da der Interpreter sonst ausfällt.
quelle
JAEL ,
1310 BytesProbieren Sie es online!
Erklärung (automatisch generiert):
quelle
05AB1E , 6 Bytes
Probieren Sie es online!
Erläuterung:
Æ
ist nicht oft nützlich, aber dies ist die Zeit zu glänzen. Dies übertrifft die NaivitätLOnILnO-
um zwei ganze Bytes.quelle