dc , 25 22 octets
9k5v1+2/3?*1-^5v/0k2/p
Essayez-le en ligne!
Ou enregistrez le programme dans un fichier et exécutez-le en tapant
dc -f *filename*
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:
9k # Sets the precision to 9 decimal places (which is more than sufficient).
5v # Push the square root of 5
1+ # Add 1 to the number at the top of the stack.
2/ # Divide the number at the top of the stack by 2.
À ce stade, le nombre (1 + sqrt (5)) / 2 est en haut de la pile.
3 # Push 3 on top of the stack.
? # Read a number from stdin, and push it.
\* # Pop two numbers from the stack, multiply them, and push the product
1- # Subtract 1 from the number at the top of the stack.
À 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.
^ # Pop two numbers from the stack (x, then y), compute the power y^x, and push that back on the stack.
5v/ # Divide the top of the stack by sqrt(5).
À 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.
0k # Change precision to 0 decimal places.
2/ # Divide the top of the stack by 2, truncating to an integer.
p # Print the top of the stack on stdout.