Aufgabe
Ihre Aufgabe ist einfach: Generieren Sie eine Sequenz, bei der i
der Wert für diese Position bei gegebenem Index die Summe der Quadrate von 0
bis zu i
wo ist i >= 0
.
Beispiel:
Input: 0
Output: 0 (0^2)
Input: 4
Output: 30 (0^2 + 1^2 + 2^2 + 3^2 + 4^2)
Input: 5
Output: 55 (0^2 + 1^2 + 2^2 + 3^2 + 4^2 + 5^2)
Spezifikation:
- Sie können keine Eingabe vornehmen und die Sequenz auf unbestimmte Zeit ausgeben.
- Sie können
N
dasNth
Element der Sequenz eingeben und ausgeben . - Sie können
N
die erstenN
Elemente der Sequenz eingeben und ausgeben .
code-golf
number
sequence
arithmetic
Felipe Nardi Batista
quelle
quelle
f(1) == 1 * 1 (1)
undf(24) == 70 * 70 (4900)
.f(1) = 1
?f(0) = 0
. Ich habe darauf hingewiesen, dass auf die wenigen Antworten, die diese Anforderung nicht erfülltenf(0) = 0
Anforderung hat einige meiner Lösungen ruiniert :(Antworten:
Gelee , 3 Bytes
Probieren Sie es online!
FGITW
Erläuterung
quelle
Ræ.R
Python 2 , 22 Bytes
Probieren Sie es online!
Dies verwendet die geschlossene Formel n * (n + 1) * (2 * n + 1) / 6 . Der Code führt die folgenden Vorgänge aus:
Multipliziert n mit (
n*
):~n
), was im Wesentlichen -1-n bedeutet .*~(n*2)
), was -1-2n bedeutet .Dividiert durch 6 (
/6
).Python 2 , 27 Bytes
Probieren Sie es online!
1 Byte dank Rod und 1 dank GB gespeichert .
quelle
MATL , 3 Bytes
... oder sie?
Probieren Sie es online!
Erläuterung
quelle
JavaScript (ES6), 16 Byte
Demo
Code-Snippet anzeigen
Wie?
Der Ausdruck
n+++n
wird alsn++ + n
(1) analysiert . Nicht, dass es wirklich darauf ankommt, denn dasn + ++n
würde auch in diesem Fall funktionieren.Deshalb:
die auswertet , um sum (k = 0 ... n) (K²) .
(1) Dies kann überprüft werden, indem getan wird
n='2';console.log(n+++n)
, was die ganze Zahl ergibt5
, wohingegenn + ++n
die Zeichenfolge ergeben würde'23'
.quelle
05AB1E , 3 Bytes
Probieren Sie es online!
Erläuterung
quelle
Brain-Flak , 36 Bytes
Probieren Sie es online!
quelle
({<(({}))>{({})({}[()])}{}<({}[()])>})
38Brain-Flak , 34 Bytes
Probieren Sie es online!
Wie funktioniert es?
Anfangs hatte ich die gleiche Idee wie Riley 1, aber es fühlte sich falsch an, einen Nuller zu verwenden. Das habe ich dann gemerkt
Berechnet n 2 - n.
Warum? Nun, wir wissen es
Berechnet n 2 und schleift n-mal. Das heißt, wenn wir die Reihenfolge der beiden Schübe ändern, erhöhen wir die Summe jedes Mal um n + (n-1) und erhöhen die Summe jedes Mal um (n-1) + (n-1). Dies verringert das Ergebnis um eins pro Schleife, wodurch unser Ergebnis n 2 - n wird. Auf der obersten Ebene hebt dieses -n das durch den Push erzeugte n auf, den wir auf Null gesetzt haben, wodurch die Notwendigkeit eines Nullstellers verringert und uns zwei Bytes erspart wurden.
Brain-Flak , 36 Bytes
Probieren Sie es online!
Hier ist eine andere Lösung, es ist nicht so golfen, aber es ist ziemlich seltsam, also dachte ich, ich würde es als Herausforderung belassen, herauszufinden, wie es funktioniert.
Wenn Sie nicht auf Brain-Flak stehen, aber dennoch die Herausforderung suchen, ist dies eine Summe.
1: Ich habe mir eine Lösung ausgedacht, bevor ich mir die Antworten hier angesehen habe. Also hier kein Plagiat.
quelle
Schale , 3 Bytes
Probieren Sie es online!
quelle
Ohm v2 , 3 Bytes
Probieren Sie es online!
Erläuterung
quelle
Japt , 3 Bytes
Probieren Sie es hier aus.
-1 danke an Shaggy .
Erläuterung:
quelle
p2
.Brain-Flak , 46 Bytes
Probieren Sie es online!
quelle
({{({})({}[()])}{}}{})
und spart Ihnen 10 Bytes. (Wenn das keinen Sinn ergibt, ping mich in den dritten Stapel )CJam , 10 Bytes
Probieren Sie es online!
quelle
ri),_.*:+
oderri),2f#:+
?Wolfram Language (Mathematica) , 14 Byte
Probieren Sie es online!
quelle
#.#&@Range@#&
spart ein Byte#.#&@*Range
.Eigentlich 3 Bytes
Probieren Sie es online!
Nimmt
N
als Eingabe und gibt dasN
dritte Element in der Sequenz aus.Erläuterung:
quelle
APL (Dyalog) ,
75 Bytes2 Bytes gespart dank @Mego
Probieren Sie es online!
Wie?
⍳
- Reichweite+.×
- Skalarprodukt⍨
- mit sich selbstquelle
¨⍳
war notwendigR, 17 Bytes
Ziemlich einfach, es nutzt die Tatsache, dass
^
(Potenzierung) in R vektorisiert ist .quelle
(x=0:scan())%*%x
ist um ein Byte kürzer, aber ich glaube, Sie brauchen einecat
, um die Ausgabe zu bekommen.cat
, er gibt eine 1x1 Matrix aus.cat
erforderlich ist, um sich als vollständiges Programm zu qualifizieren. Wenn Sie das ändern möchten, beantworten Sie diese Frage und finden Sie eine gewisse Unterstützung bei den anderen R-Leuten auf der Site.CJam , 9 Bytes
Probieren Sie es online!
Erläuterung
Alternative:
Dies quadriert jedes Element durch Mapping,
2#
anstatt paarweise Produkte zu verwenden. Und nur zum Spaß eine weitere Alternative, die bei großen Eingaben ungenau wird, weil sie Gleitkomma-Arithmetik verwendet:quelle
Julia ,
1614 Bytes2 Bytes gespart dank @MartinEnder
Probieren Sie es online!
Wie?
(x=1:n)
Erstellt eine Reihe von1
zun
und weist zux
,⋅
dot Produkt mitx
.quelle
Labyrinth , 11 Bytes
Probieren Sie es online!
Druckt die Sequenz auf unbestimmte Zeit.
Erläuterung
Der Befehlszeiger läuft immer und immer wieder um das Quadrat des Codes:
quelle
Cubix , 15 Bytes
Probieren Sie es online!
Mein Code ist ein bisschen traurig
):
Berechnet
n*(n+1)*(2n+1)/6
quelle
Befunge , 16 Bytes
Verwenden Sie die geschlossene Formel n * (n + 1) * (2n + 1) / 6 .
Probieren Sie es online!
Befunge , 38 Bytes
Mit einer Schleife.
Probieren Sie es online!
quelle
Haskell, 20 Bytes
Probieren Sie es online!
quelle
Excel, 19 Bytes
quelle
Hexagony , 23 Bytes
Probieren Sie es online!
Erläuterung
Entfaltet:
Dies ist eigentlich nur ein lineares Programm mit der
/
für einige Umleitungen verwendeten Funktion. Der lineare Code lautet:Was berechnet n (n + 1) (2n + 1) / 6 . Es verwendet die folgenden Speicherflanken:
Wo der Speicherpunkt (MP) an der mit n bezeichneten Kante beginnt und nach Norden zeigt.
Theoretisch könnte es möglich sein, dieses Programm in die Seitenlänge 3 einzufügen, da
/
sie für die Berechnung nicht benötigt:
werden, zum Beenden des Programms wiederverwendet werden können und einige'"=+*{
davon auch wiederverwendbar sind, was die Anzahl der erforderlichen Programme mit sich bringt Befehle unter 19 (das Maximum für Seitenlänge 3). Ich bezweifle, dass es möglich ist, eine solche Lösung von Hand zu finden, wenn überhaupt eine existiert.quelle
> <> ,
151311 Bytes2 Bytes gespart dank Not a tree
Probieren Sie es online!
Gibt die Sequenz auf unbestimmte Zeit aus.
quelle
-v
Flagge):::1+:}+**6,n
( Versuchen Sie es online! )N=1
): Probieren Sie es online!l
. Erkundigen Sie sich bei OP, ob es in Ordnung ist, um 1l
Idee von Martin Enders Labyrinth-Antwort erhalten habe .)Pyth ,
75 Bytes dank Steven H.Erläuterung:
Meine erste Lösung
Probieren Sie es online!
Erläuterung:
quelle
Neim , 3 Bytes
Es hätte eine Herausforderung sein können, Neims polygonale Zahlen zu demonstrieren, aber anscheinend nicht.
Probieren Sie es online!
quelle
Oase , 4 Bytes
Probieren Sie es online!
Erläuterung
quelle
Brachylog , 5 Bytes
Probieren Sie es online!
Erläuterung
quelle
Gaia , 3 Bytes
Probieren Sie es online!
quelle