Vous auriez dû entendre parler des nombres de Fibonacci , souvent appelés la séquence de Fibonacci. Dans cette séquence, les deux premiers termes sont 0 et 1, et chaque nombre après les deux premiers est la somme des deux précédents. En d' autres termes, F(n) = F(n-1) + F(n-2)
.
Voici les 20 premiers numéros de Fibonacci:
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181
Tâche:
Étant donné un entier x
, calculer la moyenne arithmétique (la moyenne) des nombres de Fibonacci premiers jusqu'au x
nombre de la séquence de Fibonacci.
Règles:
- la séquence de Fibonacci commence par 0 et 1 pour ce défi
3 < x < 40
, car des valeurs plus élevées dex
peuvent entraîner un temps d'exécution énorme ou des débordements et des valeurs plus petites n'ont pas de sortie- 1 n'est pas un nombre premier, car il n'a qu'un diviseur
- la moyenne arithmétique doit inclure des décimales, si c'est le cas, ou doit être affichée comme une fraction exacte
- vous êtes uniquement autorisé à prendre
x
en entrée et le code nécessaire pour prendre l'entrée ne compte pas (par exemple: si vous avez besoin de quelque chose commex = input()
, vous ne devriez pas le prendre en considération lors du comptage des octets)
Exemples:
Ex. 1: Pour x=10
la sortie est 5.75
, parce que le 10 nombre de Fibonacci est 55
et les premiers nombres de Fibonacci jusqu'à 55
sont 2, 3, 5, 13
, leur moyenne étant5.75
Après l'explication de l'exemple 1, d'autres exemples sont:
Ex. 2: Pour x=15
, la sortie est57.5
Ex. 3: Pour x=20
, la sortie est 277.428571428571
, ou toute autre approximation proche. Dans ce cas 277.4286
, par exemple, est une valeur acceptée
Ex. 4: Pour x=11
, la sortie est22.4
Ex. 5: Pour x=30
, la sortie est 60536.4444444444
, ou toute autre approximation proche, telle que60536.444
Classement:
Pour changer de leader, soumettez une solution valide plus courte. Votre code doit être aussi court que possible, car il s'agit de code-golf , donc la réponse la plus courte en octets l'emporte. Bonne chance!
Réponses:
En fait , 10 octets
Code:
Explication:
Utilise l' encodage CP-437 . Essayez-le en ligne!
la source
Python 2 , 71 octets
Essayez-le en ligne!
Python n'a pas d'intégrations arithmétiques utiles pour cela, donc nous faisons les choses à la main. Le code parcourt les numéros de Fibonacci en
a,b=b,a+b
partant dea=b=1
.Le test de primalité de Fermat avec la base 2 est utilisé pour identifier les nombres premiers comme
a
où2^a == 2 (mod a)
. Bien que cela ne vérifie que les nombres premiers probables, aucun des faux positifs ne se trouve dans les 40 premiers nombres de Fibonacci.La somme
s
et le nombre actuelsc
de nombres premiers sont mis à jour chaque fois qu'un nombre premier est rencontré, et leur rapport (la moyenne) est imprimé à la fin. Étant donné que le contrôle d'amorçage manquea=2
et qu'il est garanti d'être dans la plage d'entrée, la somme commence à 2 et le compte commence à 1 pour compenser.la source
Gelée , 11 octets
Essayez-le en ligne!
Comment ça fonctionne
la source
Mathematica, 38 octets
Explication
la source
#
et non#-1
: l'OP dit que 55 est le 10e numéro de Fibonacci, donc leur liste doit être indexée 0 (comme c'est la meilleure convention). Comparez votre sortie pour les entrées10
et11
avec l'OP. Heureusement, cela vous fait économiser trois octets!&
et remplacer#
parx
(la question dit que le code de prise d'entrée n'est pas noté)Perl 6 , 51 octets
Essayez-le
Étendu:
la source
MATL , 16 octets
Essayez-le en ligne!
Explication
la source
Octave ,
7571 octetsFonction anonyme qui utilise la formule de Binet . L'entrée et la sortie sont sous forme d'arguments de fonction.
Essayez-le en ligne!
la source
isprime
qui est parfaite pour ce défi.Maxima, 49 octets
la source
Prolog (SWI) ,
269264254218 octetsJe suis assez certain que je pourrais jouer au golf encore plus d'octets.
Exécutez-le comme
a(15, R).
pour x = 15 , R est la variable de sortie.Essayez-le en ligne!
Une version plus lisible:
la source
N*C:-
sont autorisées pour les déclarations de tête dans PPCG, ce qui peut vous faire économiser quelques octets.p(N,C):-
parN*C:-
?Röda ,
989493 octetsC'est une fonction qui renvoie le résultat sous forme de nombre à virgule flottante.
Version non golfée:
la source
c%p>0
place dec%p!=0
?05AB1E , 13 octets
Essayez-le en ligne! ou comme suite de tests
Explication
la source
Pyke , 11 octets
Essayez-le en ligne!
la source
dc , 129 octets
Un générateur de nombres Fibonacci et un vérificateur de primalité tout en un. Agréable.
Essayez-le en ligne!
la source
Japt , 14 octets
Essaye-le
Explication
Saisie implicite d'entier
U
.30
Générez un tableau d'entiers de 0 à
U
inclus.[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30]
Passez chaque entier à travers une fonction.
Obtenez le
X
numéro de Fibonacci, oùX
est l'élément actuel.Filter (
f
) le tableau pour les éléments qui retournent véridique lorsqu'il est vérifié pour primality (j
). Attribuez implicitement le tableau résultant à la variableU
.[2,3,5,13,89,233,1597,28657,514229]
Réduisez le tableau en additionnant.
544828
Divisez le résultat par la longueur du tableau (
l
) et affichez implicitement le résultat.60536.444444444445
la source
perl, 91 octets
Cuold a été raccourci de 8 octets si le test modulo pseudoprime fonctionnait aussi bien en perl que dans la réponse python:
... mais cela donne une mauvaise réponse pour une entrée> 16 en perl.
la source
Axiome, 104 octets
non golfé, code de test et résultats
j'essaie de dupliquer l'entrée des langues matematica, octave etc., si l'on ne compte pas la fonction mean (), pour l'implémenter, ce serait ici 62 octets si bien aussi
la source
JavaScript ES6,
137136118113 octetsHistoire
118 octets
136 octets
137 octets
la source