Einführung
Das Vorzeichen einer Zahl ist entweder a +
oder a -
für jede Ganzzahl ungleich Null. Null selbst ist vorzeichenlos ( +0
ist dasselbe wie -0
). In der folgenden Sequenz werden wir zwischen dem positiven Vorzeichen , der Null und dem negativen Vorzeichen wechseln . Die Sequenz beginnt mit 1
, also schreiben wir 1
mit einem positiven Vorzeichen, mit Null (dieses ist seltsam, aber wir multiplizieren nur die Zahl mit 0) und dem negativen Vorzeichen:
1, 0, -1
Die nächste Nummer ist 2
, und wir machen das Gleiche noch einmal:
2, 0, -2
Die Reihenfolge ist schließlich:
1, 0, -1, 2, 0, -2, 3, 0, -3, 4, 0, -4, 5, 0, -5, 6, 0, -6, 7, 0, -7, ...
Oder eine besser lesbare Form:
a(0) = 1
a(1) = 0
a(2) = -1
a(3) = 2
a(4) = 0
a(5) = -2
a(6) = 3
a(7) = 0
a(8) = -3
a(9) = 4
...
Die Aufgabe
Bei einer nicht negativen ganzen Zahl n wird der n- te Term der obigen Sequenz ausgegeben . Sie können wählen , ob Sie die verwenden Null-indizierte oder eine indizierte Version.
Testfälle:
Nullindexiert:
a(0) = 1
a(11) = -4
a(76) = 0
a(134) = -45
a(296) = -99
Oder wenn Sie einseitig indiziert bevorzugen:
a(1) = 1
a(12) = -4
a(77) = 0
a(135) = -45
a(297) = -99
Das ist Code-Golf , also gewinnt die Einsendung mit der geringsten Anzahl von Bytes!
[0, 0, 0, -1, 0, 1...
1
.Antworten:
Gelee, 7 Bytes
Null indexiert. Testfälle hier.
Erläuterung:
quelle
JavaScript ES6, 18 Byte
Es stellte sich heraus, dass es der Antwort von @ LeakyNun sehr ähnlich war, aber ich habe seine erst gesehen, nachdem ich meine gepostet hatte.
Erklärung und Ungolfed
-~
steht fürMath.ceil
oder rundet auf:Code-Snippet anzeigen
quelle
Math.ceil
und-~
sind verschieden;Math.ceil(1) == 1
in der Erwägung, dass-~1 == 2
n=>~(n/3)*~-(n%3)
MarioLANG,
9381 Byteseinseitig indiziert
Probieren Sie es online
Erklärung:
Wir fangen mit der Eingabe an
die uns geben
Wir dekrementieren dann das linke Byte und inkrementieren das rechte Byte mit
wir landen mit
Dann haben wir die Schleife aufgebaut
Die Schleife wird fortgesetzt, bis der Speicher wie folgt aussieht
wir brauchen dann nur noch das ergebnis auszugeben
quelle
;(
und>:(
. Obwohl zwei Mal[<:
als etwas glücklich angesehen werden könnte. ; PPython 2, 24 Bytes
Volles Programm:
quelle
MATL,
1512 BytesDies verwendet eine einseitige Indizierung.
Probieren Sie es online! oder Testfälle verifizieren
Erläuterung:
quelle
Q3/Xk-1:1G_)*
könnte besser funktionieren. Es kann wahrscheinlich für die 1-basierte Indizierung immer weiter modifiziert werden.Haskell, 27 Bytes
Etwas interessantere 28-Byte-Lösung:
(Beide sind
0
indiziert)quelle
MATL , 8 Bytes
Das Ergebnis ist 1-basiert.
Probieren Sie es online!
Erläuterung
Dadurch wird das 2D-Array erstellt
und verwendet dann die lineare Indizierung, um den gewünschten Term zu extrahieren. Linear Indexierungsmittel Index nach unten, dann über (so in der obigen Anordnung der ersten Einträge in linearer Reihenfolge ist
1
,0
,-1
,2
,0
, ...)quelle
Perl 5, 22 Bytes
21 plus eins für
-p
:Verwendet 1-basierte Indizierung.
Erläuterung:
-p
Setzt die Variable$_
gleich der Eingabe. Der Code setzt es dann gleich dem$_%3
durch 3 geteilten Element der 0-basierten Liste(-$_,$_+2)
(wobei%
modulo ist). Beachten Sie, dass$_%3
es kein solches Element gibt , wenn es zwei gibt, und die nachfolgende Division durch 3 das undefinierte Element mit 0 nummeriert.-p
Anschließend wird gedruckt$_
.quelle
Bash,
2825 Bytesquelle
Perl 6 ,
2623 Bytes(Die kürzere wurde aus anderen Antworten übersetzt)
Erklärung (der ersten):
Prüfung:
quelle
J,
19-15BytesVermutlich muss das weiter golfen ...
1-indiziert.
Ungolfed:
Dabei
>>
bedeutet Eingabe (STDIN) und<<
bedeutet Ausgabe (STDOUT).quelle
Pyke,
87 Bytes (alte Version)Probieren Sie es hier aus! - Beachten Sie, dass der Link wahrscheinlich nicht lange hält
Neueste Version
Probieren Sie es hier aus!
quelle
J, 27 Bytes
Obwohl es nicht das Golfspiel ist, gefällt es mir besser, da es eine Agenda verwendet.
Hier ist die Baumzerlegung davon:
Dies ist Kennys J-Antwort sehr ähnlich, da es die Größe und das Vorzeichen wählt, aber es unterscheidet sich darin, dass ich eine Agenda verwende, um das Vorzeichen zu wählen.
quelle
MATL, 8 Bytes
Diese Lösung verwendet eine 1-basierte Indizierung in der Sequenz.
Probieren Sie es online
Geänderte Version mit allen Testfällen
Erläuterung
quelle
Pyth, 10 Bytes
Probieren Sie es online!
Erläuterung:
Anmerkung: Ich habe die nullindizierte Sequenz angenommen.
quelle
*@(1ZtZ)%Q3h/Q3
(1ZtZ)
=-L1 2
Eigentlich 10 Bytes
Probieren Sie es online!
Erläuterung:
quelle
05AB1E, 7 Bytes
Code:
Erklärt:
quelle
GeoGebra, 44 Bytes
wo
n
ist einsindiziert.Erläuterung:
Es ist nicht notwendig, alle Drillinge durch zu erzeugen
{n, 0, -n}
, aber es ist kürzer als das Schreibenceil(n/3)
oder etwas in diesem Sinne. Beachten Sie, dassn
dieses Objekt definiert werden muss, um es zu erstellen. (Wenn es zum Zeitpunkt der Ausführung nicht definiert ist, fordert GeoGebra Sie auf, einen Schieberegler für dieses Objekt zu erstellenn
.)quelle
n
, geben Sie so etwas wien=297
(dies wird Ihnen ein Schieberegler , die gut konfiguriert ist). Fügen Sie dann die Formel in das Eingabefeld ein, das sich nun unter dem befinden sollten
. (Stellen Sie sicher,n
dass Sie die Eingabetaste drücken. ) Die Formel sollte den dritten Ausdruck der Sequenz ergeben und sich ändern, wenn Sie den Schieberegler bewegen.Labyrinth ,
171514 Bytes3 Bytes mit der Idee von Sok gespeichert,
1-(n%3)
anstelle von~(n%3-2)
.Das Programm wird mit einem Fehler (Division durch Null) beendet, die Fehlermeldung geht jedoch an STDERR.
Probieren Sie es online!
Erläuterung
Das Programm ist vollständig linear, obwohl am Ende ein Teil des Codes in umgekehrter Reihenfolge ausgeführt wird.
Der Befehlszeiger stößt jetzt auf eine Sackgasse und dreht sich um, sodass er den Code ab dem Ende ausführt:
quelle
Erlang, 40 Bytes
Leider hat Erlang keinen '%' Modulo-Operator und 'rem' benötigt die Leerzeichen, sogar vor der 3.
quelle
Hexagony , 25 Bytes
Oder im nicht minimierten Format:
Probieren Sie es online!
Mein erster Ausflug in Hexagony, also bin ich mir sicher, dass ich das bei weitem nicht so effizient gemacht habe, wie es nur geht ...
Berechnet
-(n%3 - 1)
an einer Speicherflanke,n/3 + 1
an einer benachbarten, und multipliziert sie dann miteinander.quelle
R, 28 Bytes
Sieht so aus, als wäre dies eine Variation der meisten Antworten hier. Null basiert.
Das Schöne daran ist, dass es mehrere Eingaben verarbeitet
Ursprünglich wollte ich Folgendes tun, konnte aber die zusätzlichen Bytes nicht abschneiden.
Dient
rbind
zum Hinzufügen von Nullen und Negativen zu einem Bereich von 1, umn
dann denn
'ten Term (basierend auf Eins) zurückzugeben.quelle
Batch (Windows), 86 Byte
Alternate.bat
Dieses Programm wird als
Alternate.bat n
won
ist die Nummer , die Sie wollen auf die Funktion aufzurufen.quelle
APL, 12 Zeichen
0 3⊤
ist APLdivmod 3
.quelle
Java 7,
383736 BytesMein erstes Golf, sei sanft
Probieren Sie es hier aus!(Testfälle enthalten)
Edit: Ich verzählt, und auch aus einem mehr Charakter golfed durch Ersetzen
(-i%3+1)
mit(1-i%3)
.quelle
return
und ein Java 8-Lambda verwenden.Netzhaut, 45 Bytes
Probieren Sie es online!
Testsuite.
Nimmt Eingabe / Ausgabe in Basis zehn. 1-indiziert.
Unäre Eingabe, Basis-Zehn-Ausgabe, 1-indiziert: 40 Bytes
Probieren Sie es online!
Testsuite.
quelle
MATLAB / Octave, 27 Bytes
Dadurch wird eine anonyme Funktion erstellt, die mit aufgerufen werden kann
ans(n)
. Diese Lösung verwendet eine 1-basierte Indizierung.Alle Testfälle
quelle
Mathematica 26 Bytes
Mit 4 Bytes gespart dank Martin Ender.
Verwendet den gleichen Ansatz wie Suever.
quelle
Oktave, 23 Bytes
Ohne jeglichen Kom ...
Verwendet 1-basierte Indizierungsmagie.
Erläuterung
Erstellt eine anonyme Funktion, die:
Nach dem Multiplikationsschritt erhalten wir eine 3xn-Matrix wie folgt (für n = 12):
Das Erstellen von
n
Spalten ist übertrieben, aber es ist eine praktische Zahl, die garantiert groß genug ist. Bei der linearen Indizierung wird jede Spalte von links nach rechts heruntergezählt, sodass das Element mit dem linearen Index4
angezeigt wird2
.Alle Testfälle auf ideone .
quelle
dc, 10
Verwendet 1-basierte Indizierung.
quelle