Il ne semble pas encore y avoir de concours pour celui-ci.
La tâche est simple. Ajoutez les premiers n
nombres de la séquence de Fibonacci qui sont pairs et sortez le résultat.
Ceci est donné par OEIS A099919 , sauf que la séquence est décalée d'un, en commençant par fib(1) = 0
au lieu de fib(1) = 1
.
C'est le golf de code. Le nombre d'octets le plus bas gagne.
Exemples
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
la source
la source
Réponses:
Oasis ,
875 octets1 octet enregistré grâce à @ETHProductions et 2 autres enregistrés grâce à @Adnan!
Essayez-le en ligne!
Explication:
Cela utilise la même formule de récurrence que ma réponse MATL.
la source
U
est remplacé dans le code par00
, cela pourrait-il vous faire économiser un octet?4*
parz
et2+
avec»
:)Python, 33 octets
Essayez-le en ligne
Formule magique!
la source
a(n) = (-10 + (5-3*sqrt(5))*(2-sqrt(5))^n + (2+sqrt(5))^n*(5+3*sqrt(5)))/20
(Colin Barker, 26 novembre 2016) de la page OEISPython 2 , 35 octets
Essayez-le en ligne!
la source
En fait , 6 octets
Essayez-le en ligne!
Explication:
Un troisième numéro de Fibonacci (à partir de
F_0 = 0
) est pair. Ainsi, les premiersn
nombres pairs de Fibonacci sontF_{i*3}
pouri
in[0, n)
.la source
JavaScript (ES6), 27 octets
Récursivité à la rescousse! Celui-ci utilise l'une des formules de la page OEIS:
(mais décalé d'un car le défi le déplace d'un)
la source
Pyke, 6 octets
Essayez-le ici!
la source
Perl 6 ,
38 3532 octetsEssayez-le
Essayez-le
Essayez-le
Étendu:
la source
Octave ,
363533 octetsEssayez-le en ligne!
Explication
Cette fonction anonyme implémente l'équation de différence en
a(n) = 4*a(n-1)+a(n-2)+2
tant que filtre récursif :Dans notre cas
A = [1 -4 -1]
,B = 2
et l'entréex
doit être un vecteur de uns, le résultat apparaissant comme la dernière entrée de la sortiey
. Cependant, nous définissons0
la première valeur de l'entrée afin qu'une initiale0
apparaisse dans la sortie, comme requis.'FAD'-69
est juste un moyen plus court de produire le vecteur de coefficientA = [1 -4 -1]
; et(1:n)>1
produit le vecteur d'entréex = [0 1 1 ... 1]
.la source
dc ,
2522 octetsEssayez-le en ligne!
Ou enregistrez le programme dans un fichier et exécutez-le en tapant
Le programme accepte un entier non négatif n sur stdin, et il sort la somme des n premiers nombres de Fibonacci pairs sur stdout. (La séquence de Fibonacci est prise pour commencer par 0, selon les exemples de l'OP.)
Ce programme utilise la formule (F (3n-1) -1) / 2 pour la somme des n premiers nombres de Fibonacci pairs, où F est la fonction de Fibonacci habituelle, donnée par F (0) = 0, F (1) = 1, F (n) = F (n-2) + F (n-1) pour n> = 2.
dc est une calculatrice basée sur la pile. Voici une explication détaillée:
À ce stade, le nombre (1 + sqrt (5)) / 2 est en haut de la pile.
À ce stade, 3n-1 est en haut de la pile (où n est l'entrée) et (1 + sqrt (5)) / 2 est le deuxième en haut.
À ce stade, le nombre en haut de la pile est (((1 + sqrt (5)) / 2) ^ (3n-1)) / sqrt (5). L'entier le plus proche de ce nombre est F (3n-1). Notez que F (3n-1) est toujours un nombre impair.
la source
Mathematica,
2721 octetsMerci à xnor d'avoir indiqué une autre formule, alephalpha pour avoir corrigé l'index de départ
la source
(Fibonacci(3*n+2)-1)/2
formule pourrait-elle être plus courte?MATL ,
1514 octetsEssayez-le en ligne!
Explication
Celui-ci utilise l'une des formules de récurrence d'OEIS:
Pour l'entrée N, le code itère N fois, soit 2 fois plus que nécessaire. Ceci est compensé en définissant
0
,0
(au lieu de0
,2
) comme valeurs initiales, et en supprimant la dernière valeur obtenue et en affichant la précédente.la source
Lot, 80 octets
Utilise le fait que chaque troisième nombre de Fibonacci est pair, et les calcule simplement trois à la fois (calculer plus d'un à la fois est en fait plus facile car vous n'avez pas à échanger de valeurs). J'ai essayé la
(Fibonacci(3*n+2)-1)/2
formulation mais c'est en fait quelques octets de plus (t+=
s'avère être assez efficace en termes de taille de code).la source
C,
823836 octets2 octets enregistrés grâce à @BrainSteel
Les formules de la page OEIS l'ont rendu beaucoup plus court:
Essayez-le en ligne!
82 octets:
La première version est de 75 octets mais la fonction n'est pas réutilisable, sauf si vous appelez toujours
f
avec plusN
que l'appel précédent :-)Ma première réponse ici. N'a pas vérifié d'autres réponses ni l'OEIS. Je suppose qu'il y a quelques astuces que je peux appliquer pour raccourcir :-)
la source
a(n){return--n<1?0:4*a(n)+a(n-1)+2;}
(36 octets)Haskell (
3231 octets)Un octet enregistré grâce à @ChristianSievers.
Utilisation de la formule donnée dans OEIS:
a(n) = 4*a(n-1)+a(n-2)+2, n>1
par Gary Detlefsa n|n>1=4*a(n-1)+a(n-2)+2|n<2=0
la source
n<=1
pour les entiers estn<2
. De plus, la deuxième condition n'a pas besoin d'être la négation de la première (l'idiomatiqueotherwise
est simplementTrue
), donc généralement dans le golf, quelque chose comme1<2
est utilisé.Mathematica,
3227 octetsCrédit à xnor . Enregistré 5 octets grâce à JungHwan Min.
la source
(Fibonacci(3*n+2) - 1)/2
ou d'écrire le sumi?(* Vincenzo Librandi, Mar 15 2014 *)
dans le post, comme c'est le cas sur OEIS.)R, 42 octets
Solution non récursive, contrairement à la solution précédente de @rtrunbull ici .
Utilise la propriété que chaque troisième valeur de la séquence de Fibonacci est paire. Abuse également le fait qui
F
est défini par défaut commeFALSE=0
, ce qui lui permet comme base pour ajouter les valeurs à.la source
R,
4241 octetsAuparavant, j'avais cette solution sans intérêt en utilisant l'une des formules d'OEIS:
la source
desctools::fibonacci
ce que ça fait exactementnumbers::fibonacci
? Parce que cette brume est un peu plus courte.bigz
, que la*apply
classe de fonctions convertit en typeraw
pour des raisons ...Japt , 10 octets
Essayez-le en ligne!
Merci ETHproductions :)
la source
PHP,
7370 octetsprésentant des variables variables . Sur). Courez avec
-nr
.panne
Les nombres sont des noms de variables parfaitement valides en PHP.
Mais, pour les littéraux, ils nécessitent des accolades; c'est-à
${0}
- dire non$0
.36 octets, O (1)
port de la réponse de xnor
la source
PARI / GP, 21 octets
\
est le quotient entier.la source