Ziel ist es, alle Quadrate bis x
mit Addition und Subtraktion zu berechnen .
Regeln:
- Der Code muss eine Funktion sein, die die Gesamtzahl der zu generierenden Quadrate verwendet und ein Array zurückgibt, das alle diese Quadrate enthält.
- Sie können keine Zeichenfolgen, Strukturen, Multiplikations-, Divisions- oder integrierten Funktionen zum Berechnen von Quadraten verwenden.
- Sie können nur Arrays, Ganzzahlen (ganze Zahlen), Additionen und Subtraktionen verwenden. Keine anderen Betreiber erlaubt!
Dies ist eine Code-Golf- Frage, also gewinnt der kürzeste Code in Bytes!
Antworten:
APL - 10
Anwendungsbeispiel:
ngn APL Demo
quelle
+\1+⍳+⍳
C,
5552 Bytessummiert einfach ungerade Zahlen
n
: Anzahl der zu berechnenden Quadrater
: Ausgabearray zum Speichern der Ergebnissej
: nimmt die aufeinanderfolgenden Werte 1, 3, 5, 7, ...i
: wirdj
bei jeder Iteration um erhöhtBearbeiten
Mit der impliziten int-Deklaration (> C99) können 4 Zeichen gespeichert werden. Dies kostet jedoch 1 Zeichen, da
for
Initialisierer in> C99 keine Deklaration enthalten können. Dann wird der CodeVerwendung
Ausgabe
quelle
GolfScript, 17 Zeichen
Verwendung (siehe auch Beispiele online ):
Hinweis:
*
ist eine Schleife und nicht der Multiplikationsoperator.quelle
,
nimmt die Eingabe und konvertiert sie in das Array[0 1 ... n-1]
. Dann*
spritzt den gegebenen Code-Block in das Array. Dieser Block verdoppelt zuerst das aktuelle Element (.+
), subtrahiert eins ((
) und addiert dann das vorherige Ergebnis1$+
(mit anderen Worten, addiert2j-1
zur vorherigen quadratischen Zahl).[]
schließt alles ein, um ein neues Array zurückzugeben.Windows Batch, 115 Byte
Dies sollte in einer Batchdatei abgelegt werden, anstatt von cmd ausgeführt zu werden, und es gibt die Liste an die Konsole aus. Es wird die Anzahl der Quadrate benötigt, die aus dem ersten Befehlszeilenargument erstellt werden sollen. Zum größten Teil wird
&
anstelle von Zeilenumbrüchen eine verwendet , eine wird jedoch weiterhin benötigt und zählt als zwei Bytes.Es muss eine verzögerte Variablenerweiterung aktiviert sein, dies kann mit erfolgen
cmd /v:on
. Vorausgesetzt, dies ist nicht der Fall,setlocal enabledelayedexpansion&
wurde zu Beginn ein zusätzliches benötigt (ohne dieses Skript beträgt das Skript 83 Byte).quelle
Haskell - 30
Dies nutzt die Tatsache, dass
(n+1)^2=n^2+2n+1
quelle
Perl, 27 Bytes
Mathematik:
Skript zum Aufrufen der Funktion zum Drucken von 10 Quadraten:
Ergebnis:
Bearbeitungen:
pop
stattshift
(−2 Bytes, danke skibiranski )quelle
JavaScript - 32 Zeichen
Angenommen, eine Variable
x
existiert und erstellt ein Arraya
von Quadraten für Werte1..x
.ECMAScript 6 - 27 Zeichen
Durch Aufrufen
f(x)
wird das Arrayb
mit den Quadraten für Werte gefüllt0..x
.quelle
i+++i
am Ende ...?k+=i+++i
ist das gleiche wiek += i + (++i)
das gleiche wiek+=i+i+1
gefolgt voni=i+1
b=[f=i=>b[i]=i&&i+--i+f(i)]
. B. ).Julia - 33
Jede quadratische Zahl kann durch Summieren ungerader Zahlen geschrieben werden:
quelle
C ++
9981788078Mein erster Versuch im Code-Golf
Dieser Code wird auf der Grundlage
eines 2 = xn - 1
wobei n ist Zählung Begriff und a ist n - ten Term in der Serie nach
1, 3, 5, 9, 11, 13, .....
Summe der ersten 2 Begriffe = 2 kariert
Summe der ersten 3 Terme = 3 im Quadrat
und so weiter ...
quelle
{}
nach derfor
Schleife entfernen , da es nur eine Anweisung gibt. Dies kann Ihreaddition, subtraction
, ich benutze nur dieseDCPU-16-Baugruppe (90 Byte)
Ich habe das in Montage für einen fiktiven Prozessor geschrieben, denn warum nicht?
Es wird erwartet, dass sich die Nummer im X-Register befindet, und es wird erwartet, dass andere Register 0 sind. Die Ergebnisse werden auf den Stapel übertragen. Aufgrund der 16-Bit-Architektur wird er unterbrochen, sobald er 65535 erreicht. Möglicherweise möchten Sie
SUB PC, 1
am Ende ein hinzufügen , um es zu testen. Kompiliert sollte das Programm 20 Bytes (10 Wörter) umfassen.quelle
Haskell
Dies erfindet im Grunde die Multiplikation, verwendet sie selbst und ordnet sie allen Zahlen zu.
f 10
=[0,1,4,9,16,25,36,49,64,81]
. Alsof 91
=[0,1,4,9,16,25,36,49,64,81,100,121,144,169,196,225,256,289,324,361,400,441,484,529,576,625,676,729,784,841,900,961,1024,1089,1156,1225,1296,1369,1444,1521,1600,1681,1764,1849,1936,2025,2116,2209,2304,2401,2500,2601,2704,2809,2916,3025,3136,3249,3364,3481,3600,3721,3844,3969,4096,4225,4356,4489,4624,4761,4900,5041,5184,5329,5476,5625,5776,5929,6084,6241,6400,6561,6724,6889,7056,7225,7396,7569,7744,7921,8100]
.quelle
Haskell, 34/23
oder wenn die Importe in Ordnung sind:
Ausgabe:
quelle
Javascript 47
function f(n,a){return a[n]=n?f(n-1,a)+n+n-1:0}
r=[];f(12,r);console.log(r)
kehrt zurück :[0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144]
quelle
f=(n,a)=>a[n]=n?f(n-1,a)+n+n-1:0
.Smalltalk, 52
Gibt ein neues Array zurück (dh es wird kein vorhandenes gefüllt oder zu einem vorhandenen hinzugefügt).
Anruf:
f-Wert: 10
-> # (1 4 9 16 25 36 49 64 81 100)
quelle
Python - 39
Durch einen
5
beliebigen Wert ersetzen . Irgendwelche Vorschläge?quelle
Bash -
928562615957Ergebnis:
Bearbeiten: Ich habe die innere Schleife durch den Algorithmus aus der Haskell-Lösung von @ mniip ersetzt.
quelle
Gleiche Methode wie oben, in APL und J:
APL:
F←{+\1+V+V←¯1+⍳⍵}
(17 Zeichen) funktioniert mit den meisten APL-Varianten (versuchen Sie es hier )und noch weniger (nur 14 Zeichen) mit NGN APL:
F←{+\1+V+V←⍳⍵}
(siehe hier )J:
f=:+/\@(>:@+:@:i.)
(18 Zeichen)edit: bessere Lösung in APL:
F←{+\¯1+V+V←⍳⍵}
(15 Zeichen)quelle
C # (82)
quelle
C # - 93
Beim Aufruf von einer anderen Methode derselben Klasse wird das Array -
[1,4,9,16,25,36...]
bis zuml
Element zurückgegeben.quelle
int[]
und zu entfernensq
? Ich kenne C # nicht, aber ich denke, es sollte funktionieren.int[]sq
anstelle vonint[] sq
undint[]res
anstelle vonint[] res
. Dies hilft Ihnen, zwei Zeichen zu speichern, und ich habe damit keine Kompilierungsfehler erhalten. Außerdem sollten Sie fürsq
undres
wie vorgeschlagen Einzelzeichen- IDs verwenden.Fortran II | IV | 66 | 77,
134122109105Bearbeiten: Die innere Schleife wurde entfernt und stattdessen der Haskell-Algorithmus von @ mniip verwendet.
Bearbeiten: Verifiziert, dass das Unterprogramm und der Treiber Fortran II und IV gültig sind
Treiber:
Ergebnis:
quelle
Python - 51
Hier definiere ich eine Funktion, wie sie von den Regeln verlangt wird.
Verwendung
sum
von ungeraden Zahlen:Dies verwendet nur
sum
(ein integriertes Element, das das Hinzufügen ausführt) undrange
(ein integriertes Element, das Arrays mithilfe des Hinzufügens erstellt). Wenn Sie dagegen sindsum
, können wir dies tun mitreduce
:quelle
PHP, 92 Bytes
Hierfür muss natürlich die Option "Short Tags" aktiviert sein (um 3 Bytes beim Start zu sparen).
Ausgabe:
quelle
Weiter - 48 Bytes
Verwendung:
Ausgabe:
quelle