In der alternierenden Fibonacci-Sequenz beginnen Sie zunächst mit 1
und 1
wie gewohnt.
Anstatt jedoch immer die letzten beiden Werte zu addieren, um die nächste Zahl zu erhalten, beginnen Sie abwechselnd mit dem Addieren und subtrahieren stattdessen jedes weitere Mal.
Die Sequenz beginnt wie folgt:
1
1
2 # 1 + 1
-1 # 1 - 2
1 # 2 + -1
-2 # -1 - 1
-1 # 1 + -2
-1 # -2 - -1
-2 # -1 + -1
1 # -1 - -2
-1 # -2 + 1
2 # 1 - -1
1 # -1 + 2
1 # 2 - 1
etc.
Beachten Sie, dass nach dem Start zu Ende , wenn es bekommt 1
und 1
wieder.
Bei einer gegebenen Zahl N wird der N- te Term der alternierenden Fibonacci-Sequenz gedruckt .
Denken Sie daran, dies ist Code-Golf , also gewinnt der Code mit der geringsten Anzahl von Bytes.
true
zu1
?1
Zählen die ersten beiden Werte als Anfangswerte für die Ausgabe? Oder fangen wir direkt mit dem an2
?Antworten:
JavaScript (ES6), 25 Byte
0-indiziert. Sie können die Zeichenfolge mit einer leicht rekursiven Version kürzen, obwohl 6 Bytes hinzugefügt werden:
Dies ist immer noch kürzer als die endgültige rekursive Formel:
quelle
Python, 31 Bytes
Macht sich nicht die Mühe, den Wert zu berechnen. Schlägt einfach in der Liste der peroidischen Länge 12 nach
[1, 1, 2, -1, 1, -2, -1, -1, -2, 1, -1, 2]
, die in Basis 5 komprimiert ist.Vergleiche mit einer rekursiven Lösung (37 Bytes) mit
True
's for 1:oder zur String-Speicherung
oder ein Versuch eines arithmetischen Ausdrucks.
quelle
Oase , 10 Bytes
Erinnert mich daran, weitere integrierte Funktionen zu implementieren: p. Die Eingabe ist 0-indiziert .
Code:
Übersetzte Version:
Und berechnet den n- ten Term.
Probieren Sie es online!
quelle
05AB1E , 10 Bytes
Verwendet die CP-1252- Codierung. Probieren Sie es online!
quelle
Pyth - 13 Bytes
Basis einmal codiert, modular indiziert.
Probieren Sie es hier online aus .
quelle
Gelee, 12 Bytes
TryItOnline!
1-basiert sind die ersten und zweiten Werte gegeben
1
.Ich bin mir nicht sicher, ob dies noch kürzer ist, aber dafür habe ich festgestellt, dass die Serie eine Periode von 12 hat:
[1, 1, 2, -1, 1, -2, -1, -1, -2, 1, -1, 2]
Also nahm ich das und fügte hinzu
2
, um zu geben,[3, 3, 4, 1, 3, 0, 1, 1, 0, 3, 1, 4]
dann konvertierte ich das als Basiszahl
5
zu Basis250
, um zu geben:[11, 197, 140, 84]
(was ist
184222584
).quelle
Haskell,
3326 BytesRekursiver Ansatz. 0-indiziert. Probieren Sie es auf Ideone.
7 Bytes gespart dank xnor .
Verwendung:
quelle
a!b=a:b:(a+b)!(-a)
.Mathematica, 40 Bytes
Erstellt einfach eine Nachschlagetabelle und greift zyklisch darauf zu, wie in der Antwort von ETHproductions. Unbenannte Funktion, 1-indiziert.
quelle
MATL ,
171615 BytesDie Eingabe ist 1-basiert.
Probieren Sie es online!
Erläuterung
Die Sequenz hat Punkt
[1 1 2 -1 1 -2 -1 -1 -2 1 -1 2]
.quelle
WinDbg, 26 Bytes
Die Eingabe wird über das Pseudoregister weitergeleitet
$t0
. 0-indiziert. +2 jedes Terms in der Sequenz wird in 3 Bit gespeichert85824331b
.Wie es funktioniert:
Beispielausgabe, eine Schleife, die die ersten 14 Werte der Sequenz druckt:
quelle
Java, 32 Bytes
Da dies Java ist, ist die Antwort 0-indiziert.
Testen und ungolfed:
Test auf Ideone
quelle
Mathematica,
454138 BytesDanke an @MartinEnder für 3 Bytes.
0-indiziert.
Verwendung
quelle
±
anstelle einer Funktion einen unären Operator definierena
.Perl 6 ,
39 3532 Bytesquelle
C #, 117 Bytes
Golf gespielt:
Ungolfed:
Testen:
quelle
public int A(int n)
jetztn=>
die Klammern um die for-Anweisung entfernen, die 2 Bytes speichert. Sie können diei
in der Schleife vorinkrementieren, dh++i <= n
und dasi = 2
Speichern von 3 Bytes festlegen , da sie diei++
am Ende der Anweisung löschtR, 38 Bytes
Verwendet die von @ETHproductions JS answer inspirierte Lookup-Table-Lösung.
Bearbeiten: Ich habe vergessen zu erwähnen, dass dies 1-indiziert ist.
quelle
Eigentlich 22 Bytes
Probieren Sie es online!
Erläuterung:
quelle
Java 7,
888279 BytesGolf gespielt:
ungolfed:
Probieren Sie es online aus
quelle
int
als Rückgabetyp zu deklarieren . 2. Sie können Bytes sparen, indem Sie die Zuweisung von 0 in die Deklaration von i:int c,i=0
und verschiebenfor(;i<n;){
. 3. Sie können Klammern um die ternäre Operatorbedingung entfernen.DC, 55 Bytes
0-indiziert.
Register d speichert den Index des Wertes. Register n zählt die Anzahl der durchgeführten Iterationen. Register r speichert das Hauptmakro. Register y speichert den späteren Wert in der Sequenz, während der Stapel den früheren Wert in der Sequenz enthält.
Visuelle Erklärung, was in der großen Schleife vor sich geht
Die Prüfung, ob addiert oder subtrahiert werden soll, nimmt das Zählermodul zwei und verwendet diesen Trick , um eine If-Then-else-Konstruktion zu erstellen.
Am Ende enthält der Stapel eine einzelne Zahl, den gewünschten Wert, mit dem gedruckt wird
p
.(Ich bin neu in
dc
, daher würde ich erwarten, dass hier einige offensichtliche Verbesserungen vorgenommen werden müssen.)quelle
ForceLang , 153 Byte
quelle
Turtlèd , 35 Bytes
0 indiziert
Erläuterung:
Probieren Sie es online!
quelle
ABCR, 43 Bytes
Erläuterung: Der erste Teil (
)AAB)ABB..A))A..A)AA(ABB.)A+A)))A
) richtet die Warteschlange A so ein, dass sie [1, 1, 2, -1, 1, -2, -1, -1, -2, 1, -1, 2] enthält, wobei alle anderen Warteschlangen leer bleiben .iB
speichert unseren gewünschten Begriff und die Schleife5aAb(Bx
durchläuft die Warteschlange so oft.o
druckt die Vorderseite der Warteschlange als Zahl aus, die dann unsere gewünschte Antwort ist.quelle
Batch, 49 Bytes
Übernimmt die Eingabe als Befehlszeilenparameter. Erläuterung: In der geschlossenen Form werden die folgenden Beobachtungen verwendet:
Wir beginnen daher mit der Reduzierung von Modulo 12 (um 2 Bytes zu sparen). Wir reduzieren dann Modulo drei und invertieren das Ergebnis, das sonst 1 für ein Vielfaches von 3 oder 0 ist. Wir geben dann bitweise nicht diesen Wert an, sondern -2 für Vielfache von 3 oder -1. Wir reduzieren dann Modulo 5 und dividieren getrennt durch 4, wobei wir für die Terme 1, 2, 3, 5, 10 und 12 (0) Null ergeben. Invertieren und Negieren ergibt -1 für diese Werte und Null für andere Werte. Wir werden dann bitweise oder das mit 1 und multiplizieren mit der früheren Berechnung.
quelle
TI-Basic, 26 Bytes
Leider sehr uninteressanter Ansatz. Ich konnte nichts kürzeres finden. Die Liste ist 1-indiziert.
quelle
C #
7371 BytesDies verwendet 0-indizierte Werte von n.
Formatierte Version:
quelle