Sie kennen wahrscheinlich alle die Fibonacci-Sequenz:
fibonacci(n)=fibonacci(n-1)+fibonacci(n-2)
fibonacci(0)=0
fibonacci(1)=1
Ihre Aufgabe ist so einfach wie möglich:
- Gegebenen ganzzahligen
N
Rechenfibonacci(n)
aber hier ist die Wendung:
- Auch negativ machen
N
Warten. Was?
fibonacci(1)=fibonacci(0)+fibonacci(-1)
so
fibonacci(-1)=1
und
fibonacci(-2)=fibonacci(0)-fibonacci(1)=-1
und so weiter...
- Dies ist ein Code-Golf, so dass das kürzeste Programm in Bytes gewinnt.
- Sie können eine Funktion oder ein vollständiges Programm einreichen
- N ist in [-100,100]
Testfälle in CSV:
-9;-8;-7;-6;-5;-4;-3;-2;-1;0;1;2;3;4;5;6;7;8
34;-21;13;-8;5;-3;2;-1;1;0;1;1;2;3;5;8;13;21
Hinweis:
n <0 und n & 1 == 0:
fibonacci(n)=fibonacci(abs(n))*-1
Antworten:
Mathematica, 9 Bytes
Ja, diese integrierte Funktion unterstützt negative Zahlen.
quelle
Oktave, 20 Bytes
Probieren Sie es online!
Erläuterung
Dies nutzt die Tatsache, dass die Fibonacci-Sequenz
f(n)
wie folgt geschrieben werden kann (dies sollte eine Matrixvektor-Notation sein):Rekursiv:
Ausdrücklich:
Dies bedeutet, dass der obere rechte Eintrag dieser Matrix zur Potenz von
n
dem Wert ist, denf(n)
wir suchen. Natürlich können wir diese Matrix auch invertieren, da sie den vollen Rang hat und die Beziehung immer noch dieselbe Wiederholungsbeziehung beschreibt. Das heißt, es funktioniert auch für negative Eingänge.quelle
ans(-6)
sein soll positiv?Maxima, 3 Bytes
unterstützt positive und negative Zahlen.
Probieren Sie es (Paste) auf CESGA - Maxima online
quelle
Python, 43 Bytes
Eine direkte Formel mit dem goldenen Schnitt
g
. Mitf
der obigen Funktion:Gleiche Länge alt, nur Aliasing der Quadratwurzel von 5:
Ich habe keine Möglichkeit gesehen, eine rekursive Funktion zu erstellen, die mit diesen konkurrieren könnte. Ein leicht golfener Versuch für 57 Bytes:
Zum Vergleich eine iterative Methode (60 Bytes in Python 2):
Oder für 58 Bytes:
quelle
JavaScript (ES6), 42 Byte
Prüfung
Code-Snippet anzeigen
quelle
MATL ,
119 BytesIch freue mich über dieDanke @LuisMendo für -2 Bytes =)[3,2]
, die sicherlich Golf spielen könnten, wenn jemand einen Weg kennt, lass es mich bitte wissen =) (Es würde auch funktionieren[1,3]
.)Dies ist derselbe Ansatz wie der Octave-Annswer . Aber um die Matrix zu generieren
Wir konvertieren nur die Zahl
3
und2
von dezimal nach binär (dh11
und10
).Probieren Sie es online!
quelle
JavaScript (ES7) 37 Byte
Verwendet die Binet-Formel .
Dies gibt die
n
th Fibonacci-Zahl + - aus0.0000000000000005
.quelle
**
benötigt ES7.1-p
statt zu-1/p
verwenden.Jolf, 2 Bytes
Probieren Sie es hier aus!
Das eingebaute Fibonacci, implementiert mit der
phi
Formel.quelle
Haskell, 51 Bytes
quelle
,
statt&&
:even z,z<0
.PowerShell , 112 Bytes
Demo-Aufruf:
Ausgabe der Demo:
quelle
Lithp , 88 Bytes
Mein Blick auf all diese Klammern .
Probieren Sie es online!
Eigentlich nicht sehr klein. Derzeit ist ein Parsing-Fehler aufgetreten, für dessen Verwendung
(get N)
oder(+ N)
anstelle von "Einfach" ein Fehler erforderlich istN
. Ich habe den kleineren gewählt. Ich glaube jedoch nicht, dass es irgendetwas gibt, was man tun könnte, um dies zu verbessern.quelle