Deberías haber escuchado sobre los números de Fibonacci , a menudo llamados la secuencia de Fibonacci. En esta secuencia, los dos primeros términos son 0 y 1, y cada número después de los dos primeros es la suma de los dos anteriores. En otras palabras, F(n) = F(n-1) + F(n-2)
.
Aquí están los primeros 20 números de Fibonacci:
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181
Tarea:
Dado un número entero x
, calcule la media aritmética (el promedio) de los números primos de Fibonacci hasta el x
número de la secuencia de Fibonacci.
Reglas:
- la secuencia de Fibonacci comienza con 0 y 1 para este desafío
3 < x < 40
, porque los valores más altos dex
podrían causar un tiempo de ejecución enorme o desbordamientos y los valores más pequeños no tienen salida- 1 NO es primo, ya que solo tiene 1 divisor
- la media aritmética debe incluir decimales, si es el caso, o debe mostrarse como una fracción exacta
- solo se le permite tomar
x
como entrada y el código necesario para tomar la entrada no cuenta (por ejemplo: si necesita algo asíx = input()
, no debe tenerlo en cuenta al contar los bytes)
Ejemplos:
Ex. 1: Para x=10
, la salida es 5.75
, porque el décimo número de Fibonacci es 55
y los números primos de Fibonacci 55
son 2, 3, 5, 13
, siendo su promedio5.75
Siguiendo la explicación del ejemplo 1, otros ejemplos son:
Ex. 2: para x=15
, la salida es57.5
Ex. 3: Para x=20
, la salida es 277.428571428571
, o cualquier otra aproximación cercana. En este caso 277.4286
, por ejemplo, es un valor aceptado
Ex. 4: parax=11
, la salida es22.4
Ex. 5: Para x=30
, la salida es 60536.4444444444
, o cualquier otra aproximación cercana, como60536.444
Tabla de clasificación:
Para cambiar el líder, envíe una solución válida más corta. Su código debe ser lo más corto posible, ya que es code-golf , por lo que gana la respuesta más corta en bytes. ¡Buena suerte!
Respuestas:
En realidad , 10 bytes
Código:
Explicación:
Utiliza la codificación CP-437 . Pruébalo en línea!
fuente
Python 2 , 71 bytes
Pruébalo en línea!
Python no tiene funciones aritméticas útiles para esto, por lo que hacemos las cosas a mano. El código itera a través de los números de Fibonacci a través de
a,b=b,a+b
partir dea=b=1
.La prueba de primalidad de Fermat con base 2 se utiliza para identificar primos como
a
dónde2^a == 2 (mod a)
. Aunque esto solo comprueba posibles números primos, ninguno de los falsos positivos está dentro de los primeros 40 números de Fibonacci.La suma actual
s
y el recuentoc
de primos se actualizan cada vez que se encuentra un primo, y su relación (la media) se imprime al final. Debido a que la verificación principal fallaa=2
y se garantiza que está en el rango de entrada, la suma comienza en 2 y la cuenta comienza en 1 para compensar.fuente
Jalea , 11 bytes
Pruébalo en línea!
Cómo funciona
fuente
Mathematica, 38 bytes
Explicación
fuente
#
y no#-1
: el OP dice que 55 es el décimo número de Fibonacci, por lo que su lista debe estar indexada a 0 (como es la mejor convención). Compare su salida para entradas10
y11
con el OP. Afortunadamente, esto realmente te ahorra tres bytes.&
y reemplazar#
conx
(la pregunta dice que el código de entrada no está calificado)Perl 6 , 51 bytes
Intentalo
Expandido:
fuente
MATL , 16 bytes
Pruébalo en línea!
Explicación
fuente
Octava ,
7571 bytesFunción anónima que usa la fórmula de Binet . La entrada y la salida están en forma de argumentos de función.
Pruébalo en línea!
fuente
isprime
que es perfecto para este desafío.Máximo, 49 bytes
fuente
Prólogo (SWI) ,
269264254218 bytesEstoy bastante seguro de que podría jugar algunos bytes más hacia abajo.
Ejecútelo como
a(15, R).
para x = 15 , R es la variable de salida.Pruébalo en línea!
Una versión más legible:
fuente
N*C:-
se permiten cosas como las declaraciones de encabezado en PPCG, que pueden ahorrarle algunos bytes.p(N,C):-
conN*C:-
?Röda ,
989493 bytesEs una función que devuelve el resultado como un número de coma flotante.
Versión sin golf:
fuente
c%p>0
lugar dec%p!=0
?05AB1E , 13 bytes
Pruébalo en línea! o como un conjunto de pruebas
Explicación
fuente
Pyke , 11 bytes
Pruébalo en línea!
fuente
cc , 129 bytes
Un generador de números de Fibonacci y un verificador de primalidad, todo en uno. Agradable.
Pruébalo en línea!
fuente
Japt , 14 bytes
Pruébalo
Explicación
Entrada implícita de entero
U
.30
Genere una matriz de enteros de 0 a
U
inclusive.[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]
Pase cada número entero a través de una función.
Obtenga el
X
número de Fibonacci, dondeX
está el elemento actual.Filtra (
f
) la matriz a aquellos elementos que devuelven la verdad cuando se verifica la primalidad (j
). Asigna implícitamente la matriz resultante a la variableU
.[2,3,5,13,89,233,1597,28657,514229]
Reduzca la matriz sumando.
544828
Divida el resultado por la longitud de la matriz (
l
) y genere el resultado implícitamente.60536.444444444445
fuente
perl, 91 bytes
Cuold ha sido 8 bytes más corto si la prueba de módulo pseudoprime funcionó tan bien en Perl como en la respuesta de Python:
... pero esto da una respuesta incorrecta para la entrada> 16 en perl.
fuente
Axioma, 104 bytes
sin golf, código de prueba y resultados
i tratar de duplicar la matematica, octava entrada, etc idiomas, si uno no cuenta la función de la media (), para poner en práctica, sería aquí 62 bytes tan bueno también
fuente
JavaScript ES6,
137136118113 bytesHistoria
118 bytes
136 bytes
137 bytes
fuente