n
Konstruieren Sie bei einer positiven Eingangszahl eine Zahlenspirale von 1
bis n^2
, wobei sich 1
oben links im Uhrzeigersinn eine Spirale nach innen dreht. Nehmen Sie die Summe der Diagonalen (wenn n
ungerade, wird die mittlere Zahl n^2
zweimal gezählt) und geben Sie diese Zahl aus.
Beispiel für n = 1
:
1
(1) + (1) = 2
Beispiel für n = 2
:
1 2
4 3
(1+3) + (4+2) = 4 + 6 = 10
Beispiel für n = 4
:
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
(1+13+15+7) + (10+16+14+4) = 36 + 44 = 80
Beispiel für n = 5
:
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9
(1+17+25+21+9) + (13+23+25+19+5) = 73 + 85 = 158
Weitere Regeln und Klarstellungen
- Dies ist OEIS A059924, und auf dieser Seite finden Sie einige geschlossene Lösungen.
- Es kann davon ausgegangen werden, dass die Eingabe und Ausgabe in den nativen Integer-Typ Ihrer Sprache passt.
- Die Eingabe und Ausgabe kann in jedem geeigneten Format erfolgen .
- Sie können für Ihre Einreichung entweder 0-Index oder 1-Index wählen, wie ich hier in meinen Beispielen bin. Bitte geben Sie an, was Sie tun.
- Entweder ein vollständiges Programm oder eine Funktion sind akzeptabel. Wenn es sich um eine Funktion handelt, können Sie die Ausgabe zurückgeben, anstatt sie zu drucken.
- Wenn möglich, fügen Sie bitte einen Link zu einer Online-Testumgebung hinzu, damit andere Personen Ihren Code ausprobieren können!
- Standardlücken sind verboten.
- Dies ist Code-Golf, daher gelten alle üblichen Golfregeln, und der kürzeste Code (in Bytes) gewinnt.
+3-3*(-1)^n
ist nicht wirklich dasselbe wie6
, obwohl der Unterschied in der Ganzzahldivision verloren geht.+3-3*(-1^n)
, ist dieselbe wie+6
. Ich werde meine Antwort aktualisieren, um dies deutlicher zu machen.+6
wennn
es seltsam ist, aber+0
wann geraden
ist3-3*(-1^n)
ist immer6
aber3-3*(-1)^n
hat dieses abwechselnde Verhalten. Die ursprüngliche Formel hat die letztere, was die Verwendung der Ganzzahldivision unnötig macht, da sie immer durch 12 teilbar istPython 2 , 30 Bytes
Durch Portierung von Giuseppes Ansatz wurden einige Bytes gespeichert .
Probieren Sie es online aus!
Python 2 ,
3634 BytesGespeichert einige mehr Bytes dank @LeakyNun .
Probieren Sie es online aus!
quelle
Mathematica, 19 Bytes
Sie können es mit der folgenden Syntax ausführen:
Wo
5
kann durch die Eingabe ersetzt werden.Sie können es in der Wolfram-Sandbox ausprobieren (Kopieren, Einfügen + Zellen auswerten).
quelle
Mathematica, 19 Bytes
Probieren Sie es online aus!
Durch Portierung von Giuseppes Ansatz wurden einige Bytes gespeichert.
Mathematica, 58 Bytes
Ich genieße immer Fragen mit gegebenen Antworten danke an oeis (für die nette Frage und Antwort)
quelle
Gelee ,
1110 Bytes1 Byte danke an Jonathan Allan.
Probieren Sie es online aus!
quelle
8,-3,4,3
->⁽ø\DN2¦
um ein Byte zu speichernMATL , 21 Bytes
Probieren Sie es online aus!
quelle
UQG1YL-tP,wXds]+
Cubix , 33 Bytes
Probieren Sie es online aus!
Würfelversion:
Implementiert den gleichen Algorithmus wie meine R-Antwort . Ich vermute, das kann man runtergolfen.
quelle
SOGL V0.12 ,
251514 BytesProbieren Sie es hier aus!
Übersetzung der Python-Antwort von Mr.Xcoder, die Giuseppes Ansatz verwendet . SOGL gewinnt hier nichts: p
quelle
Java 8, 24 Bytes
Port von @Giuseppes R Antwort .
Beachten Sie, dass
/6
bei der Berechnung mit Ganzzahlen in Java standardmäßig Stockwerke vorhanden sind.Probieren Sie es hier aus.
quelle
Excel,
3530 Bytes5 Bytes mit Giuseppes Ansatz gespeichert .
Erster Versuch:
Entwickelt aus einer direkten Implementierung der Formel aus OEIS (37 Bytes):
+3-3*(-1)^A1
Logik kann in geändert werden6*MOD(A1,2)
.Speichert keine Bytes, ermöglicht jedoch das Entfernen eines gemeinsamen Faktors für 2 Bytes.
quelle
05AB1E ,
1312 BytesVerwendet die gleiche Basiskonvertierungstechnik wie Leaky Nun's Jelly Submission
Vielleichtgibt es einen kürzeren Weg, um die Liste der Koeffizienten zu erstellen?-1 Byte dank Datboi (benutze Leerzeichen und Wrap, um die Komprimierung zu übertreffen (!))
Probieren Sie es online aus!
Wie?
Meine 13er ...
Alle verwenden Komprimierungen, um die Liste der Koeffizienten zu finden.
quelle
8 3(4 3)¹β6÷
um 1 Byte zuPyth , 17 Bytes
Probieren Sie es hier aus.
quelle
Pyke , 14 Bytes
Probieren Sie es hier aus!
quelle
05AB1E , 14 Bytes
Probieren Sie es online aus!
quelle
MATL , 12 Bytes
Probieren Sie es bei MATL Online aus!
Erläuterung
Gleicher Ansatz wie Giuseppes Antwort .
quelle
Gaia , 14 Bytes
Probieren Sie es online aus!
quelle