Es scheint noch keinen Wettbewerb für diesen zu geben.
Die Aufgabe ist einfach. Addieren Sie die ersten n
geraden Zahlen der Fibonacci-Folge und geben Sie das Ergebnis aus.
Dies ist in OEIS A099919 festgelegt , mit der Ausnahme, dass die Reihenfolge beginnend mit fib(1) = 0
statt um eins verschoben wird fib(1) = 1
.
Das ist Code Golf. Die niedrigste Byteanzahl gewinnt.
Beispiele
n sum
1 0
2 2
3 10
4 44
5 188
6 798
7 3382
8 14328
9 60696
code-golf
number-theory
fibonacci
dfernan
quelle
quelle
Antworten:
Oasis ,
875 BytesDank @ETHProductions 1 Byte und dank @Adnan 2 weitere Bytes gespart!
Probieren Sie es online!
Erläuterung:
Dies verwendet dieselbe Wiederholungsformel wie meine MATL-Antwort.
quelle
U
der Code durch ersetzt wurde. Könnte00
Ihnen das ein Byte ersparen?4*
mitz
und2+
mit ersetzen»
:)Python, 33 Bytes
Probieren Sie es online aus
Zauberformel!
quelle
a(n) = (-10 + (5-3*sqrt(5))*(2-sqrt(5))^n + (2+sqrt(5))^n*(5+3*sqrt(5)))/20
(Colin Barker, 26. November 2016) von der OEIS-SeitePython 2 , 35 Bytes
Probieren Sie es online!
quelle
Eigentlich 6 Bytes
Probieren Sie es online!
Erläuterung:
Jede dritte Fibonacci-Zahl (ab
F_0 = 0
) ist gerade. Somit sind die erstenn
geraden Fibonacci-ZahlenF_{i*3}
füri
in[0, n)
.quelle
JavaScript (ES6), 27 Byte
Rekursion zur Rettung! Dies verwendet eine der Formeln auf der OEIS-Seite:
(aber um eins verschoben, weil die Herausforderung es um eins verschiebt)
quelle
Pyke, 6 Bytes
Probieren Sie es hier aus!
quelle
Perl 6 ,
38 3532 BytesVersuch es
Versuch es
Versuch es
Erweitert:
quelle
Oktave ,
363533 BytesProbieren Sie es online!
Erläuterung
Diese anonyme Funktion implementiert die Differenzgleichung
a(n) = 4*a(n-1)+a(n-2)+2
als rekursiven Filter :In unserem Fall
A = [1 -4 -1]
sollteB = 2
und die Eingabex
ein Vektor von Einsen sein, wobei das Ergebnis als letzter Eintrag der Ausgabe erscheinty
. Wir setzen jedoch auf0
den ersten Wert der Eingabe, sodass0
bei Bedarf eine Initiale in der Ausgabe angezeigt wird.'FAD'-69
ist nur ein kürzerer Weg, um den Koeffizientenvektor zu erzeugenA = [1 -4 -1]
; und(1:n)>1
erzeugt den Eingabevektorx = [0 1 1 ... 1]
.quelle
Gleichstrom ,
2522 BytesProbieren Sie es online!
Oder speichern Sie das Programm in einer Datei und führen Sie es durch Eingabe aus
Das Programm akzeptiert eine nicht negative ganze Zahl n für stdin und gibt die Summe der ersten n geraden Fibonacci-Zahlen für stdout aus. (Die Fibonacci-Sequenz beginnt gemäß den Beispielen des OP mit 0.)
Dieses Programm verwendet die Formel (F (3n-1) -1) / 2 für die Summe der ersten n geraden Fibonacci-Zahlen, wobei F die übliche Fibonacci-Funktion ist, gegeben durch F (0) = 0, F (1) = In 1 ist F (n) = F (n - 2) + F (n - 1) für n> = 2.
dc ist ein stapelbasierter Rechner. Hier ist eine detaillierte Erklärung:
Zu diesem Zeitpunkt befindet sich die Zahl (1 + sqrt (5)) / 2 oben auf dem Stapel.
Zu diesem Zeitpunkt befindet sich 3n-1 oben im Stapel (wobei n die Eingabe ist), und (1 + sqrt (5)) / 2 befindet sich an zweiter Stelle von oben.
Zu diesem Zeitpunkt ist die Zahl oben im Stapel (((1 + sqrt (5)) / 2) ^ (3n-1)) / sqrt (5). Die nächste Ganzzahl zu dieser Zahl ist F (3n-1). Beachten Sie, dass F (3n-1) immer eine ungerade Zahl ist.
quelle
Mathematica,
2721 BytesVielen Dank an xnor für den Hinweis auf eine alternative Formel, Alephalpha für die Korrektur des Startindex
quelle
(Fibonacci(3*n+2)-1)/2
Formel kürzer sein?MATL ,
15 bis14 BytesProbieren Sie es online!
Erläuterung
Dies verwendet eine der Wiederholungsformeln von OEIS:
Für die Eingabe von N iteriert der Code N- mal, was 2-mal mehr als erforderlich ist. Dies wird ausgeglichen durch Einstellen
0
,0
(statt0
,2
) als Anfangswert, und durch den letzten erhaltene Wert zu löschen und die vorherige Anzeige.quelle
Batch, 80 Bytes
Verwendet die Tatsache, dass jede dritte Fibonacci-Zahl gerade ist und berechnet sie nur zu dritt. Ich habe die
(Fibonacci(3*n+2)-1)/2
Formulierung ausprobiert , aber sie ist tatsächlich einige Bytes länger (t+=
was die Codegröße betrifft, stellt sich heraus, dass sie ziemlich effizient ist).quelle
C
823836 Bytes2 Bytes gespart dank @BrainSteel
Die Formeln auf der OEIS-Seite haben es viel kürzer gemacht:
Probieren Sie es online!
82 Bytes:
Die erste Version ist 75 Bytes, aber die Funktion ist nicht wiederverwendbar, es sei denn, Sie rufen immer
f
mit mehrN
als dem vorherigen Aufruf auf :-)Meine erste Antwort hier. Habe weder andere Antworten noch das OEIS überprüft. Ich denke, es gibt ein paar Tricks, die ich anwenden kann, um es kürzer zu machen :-)
quelle
a(n){return--n<1?0:4*a(n)+a(n-1)+2;}
Haskell (
32-31Bytes)Dank @ChristianSievers ein Byte gespart.
Nach der Formel in OEIS:
a(n) = 4*a(n-1)+a(n-2)+2, n>1
von Gary Detlefsa n|n>1=4*a(n-1)+a(n-2)+2|n<2=0
quelle
n<=1
für ganze Zahlen zu sagen, istn<2
. Außerdem muss die zweite Bedingung nicht die Negation der ersten sein (die Redewendungotherwise
ist einfachTrue
), so dass üblicherweise beim Golfen so etwas1<2
verwendet wird.Mathematica,
3227 BytesGutschrift an xnor . 5 Bytes gespart dank JungHwan Min.
quelle
(Fibonacci(3*n+2) - 1)/2
das Sumi zu schreiben oder es zu tun ?(* Vincenzo Librandi, Mar 15 2014 *)
in die Post aufnehmen, wie es bei OEIS derR, 42 Bytes
Nicht-rekursive Lösung, im Gegensatz zur früheren Lösung von @rtrunbull hier .
Verwendet die Eigenschaft, dass jeder dritte Wert der Fibonacci-Sequenz gerade ist. Missbräuchlich ist auch die Tatsache, dass
F
standardmäßig definiert alsFALSE=0
, so dass es als Grundlage für das Hinzufügen der Werte zu.quelle
R,
4241 BytesBisher hatte ich diese uninteressante Lösung mit einer der Formeln von OEIS:
quelle
desctools::fibonacci
dasnumbers::fibonacci
nicht? Weil der Nebel etwas kürzer ist.bigz
, die die*apply
Klasse von Funktionen ausraw
Gründen in Typ konvertiert ...Japt , 10 Bytes
Probieren Sie es online!
Danke ETHproductions :)
quelle
PHP,
73-70BytesPräsentation variabler Variablen . Auf). Laufen Sie mit
-nr
.Nervenzusammenbruch
Zahlen sind in PHP vollkommen gültige Variablennamen.
Aber für die Literale brauchen sie geschweifte Klammern; also
${0}
nicht$0
.36 Bytes, O (1)
Port von Xnors Antwort
quelle
PARI / GP, 21 Bytes
\
ist der ganzzahlige Quotient.quelle