Parece que todavía no hay un concurso para este.
La tarea es simple. Agregue los primeros n
números de la secuencia de Fibonacci que sean pares y genere el resultado.
Esto viene dado por OEIS A099919 , excepto que la secuencia se desplaza por uno, comenzando con en fib(1) = 0
lugar de fib(1) = 1
.
Este es el código de golf. El conteo de bytes más bajo gana.
Ejemplos
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
fuente
fuente
Respuestas:
Oasis ,
875 bytes¡1 byte guardado gracias a @ETHProductions y 2 más guardados gracias a @Adnan!
Pruébalo en línea!
Explicación:
Esto usa la misma fórmula de recurrencia que mi respuesta MATL.
fuente
U
se reemplaza en el código con00
, ¿podría eso ahorrarle un byte?4*
conz
y2+
con»
:)Python, 33 bytes
Pruébalo en línea
¡Formula magica!
fuente
a(n) = (-10 + (5-3*sqrt(5))*(2-sqrt(5))^n + (2+sqrt(5))^n*(5+3*sqrt(5)))/20
(Colin Barker, 26 de noviembre de 2016) de la página OEISPython 2 , 35 bytes
Pruébalo en línea!
fuente
En realidad , 6 bytes
Pruébalo en línea!
Explicación:
Cada tercer número de Fibonacci (a partir de
F_0 = 0
) es par. Por lo tanto, los primerosn
números pares de Fibonacci sonF_{i*3}
parai
en[0, n)
.fuente
JavaScript (ES6), 27 bytes
¡Recursión al rescate! Esto usa una de las fórmulas en la página OEIS:
(pero cambiado por uno porque el desafío lo cambia por uno)
fuente
Pyke, 6 bytes
Pruébalo aquí!
fuente
Perl 6 ,
38 3532 bytesIntentalo
Intentalo
Intentalo
Expandido:
fuente
Octava ,
363533 bytesPruébalo en línea!
Explicación
Esta función anónima implementa la ecuación de diferencia
a(n) = 4*a(n-1)+a(n-2)+2
como un filtro recursivo :En nuestro caso
A = [1 -4 -1]
,,B = 2
y la entradax
debe ser un vector de unos, con el resultado que aparece como la última entrada de la saliday
. Sin embargo, establecemos0
el primer valor de la entrada para que0
aparezca una inicial en la salida, según sea necesario.'FAD'-69
es solo una forma más corta de producir el vector coeficienteA = [1 -4 -1]
; y(1:n)>1
produce el vector de entradax = [0 1 1 ... 1]
.fuente
dc ,
2522 bytesPruébalo en línea!
O guarde el programa en un archivo y ejecútelo escribiendo
El programa acepta un número entero no negativo n en stdin, y genera la suma de los primeros n números pares de Fibonacci en stdout. (La secuencia de Fibonacci se toma para comenzar con 0, según los ejemplos del OP).
Este programa usa la fórmula (F (3n-1) -1) / 2 para la suma de los primeros n números pares de Fibonacci, donde F es la función habitual de Fibonacci, dada por F (0) = 0, F (1) = 1, F (n) = F (n-2) + F (n-1) para n> = 2.
dc es una calculadora basada en pila. Aquí hay una explicación detallada:
En este punto, el número (1 + sqrt (5)) / 2 está en la parte superior de la pila.
En este punto, 3n-1 está en la parte superior de la pila (donde n es la entrada) y (1 + sqrt (5)) / 2 es el segundo desde la parte superior.
En este punto, el número en la parte superior de la pila es (((1 + sqrt (5)) / 2) ^ (3n-1)) / sqrt (5). El entero más cercano a este número es F (3n-1). Tenga en cuenta que F (3n-1) siempre es un número impar.
fuente
Mathematica,
2721 bytesGracias a xnor por señalar una fórmula alternativa, alephalpha por corregir el índice inicial
fuente
(Fibonacci(3*n+2)-1)/2
fórmula ser más corta?MATL ,
1514 bytesPruébalo en línea!
Explicación
Utiliza una de las fórmulas de recurrencia de OEIS:
Para la entrada N, el código itera N veces, que es 2 veces más de lo necesario. Esto se compensa mediante el establecimiento
0
,0
(en lugar de0
,2
) como valores iniciales, y eliminando el último valor obtenido y se presentan la anterior.fuente
Lote, 80 bytes.
Utiliza el hecho de que cada tercer número de Fibonacci es par, y solo los calcula de tres en tres (calcular más de uno a la vez es realmente más fácil ya que no tiene que cambiar los valores). Probé la
(Fibonacci(3*n+2)-1)/2
formulación, pero en realidad es unos pocos bytes más (t+=
resulta ser bastante eficiente en términos de tamaño del código).fuente
C,
823836 bytes2 bytes guardados gracias a @BrainSteel
Las fórmulas en la página OEIS lo hicieron mucho más corto:
Pruébalo en línea!
82 bytes:
La primera versión es de 75 bytes, pero la función no es reutilizable, a menos que siempre llame
f
con una llamada mayorN
que la anterior :-)Mi primera respuesta aquí. No comprobé ninguna otra respuesta ni el OEIS. Supongo que hay algunos trucos que puedo aplicar para acortarlo :-)
fuente
a(n){return--n<1?0:4*a(n)+a(n-1)+2;}
(36 bytes)Haskell (
3231 bytes)Guardado un byte gracias a @ChristianSievers.
Usando la fórmula dada en OEIS:
a(n) = 4*a(n-1)+a(n-2)+2, n>1
por Gary Detlefsa n|n>1=4*a(n-1)+a(n-2)+2|n<2=0
fuente
n<=1
enteros esn<2
. Además, la segunda condición no necesita ser la negación de la primera (lo idiomáticootherwise
es simplementeTrue
), por lo que habitualmente en el golf1<2
se usa algo así .Mathematica,
3227 bytesCrédito a xnor . Guardado 5 bytes gracias a JungHwan Min.
fuente
(Fibonacci(3*n+2) - 1)/2
o escribir el sumi?(* Vincenzo Librandi, Mar 15 2014 *)
en la publicación, ya que está en OEIS.)R, 42 bytes
Solución no recursiva, en contraste con la solución anterior de @rtrunbull aquí .
Utiliza la propiedad de que cada tercer valor de la secuencia de Fibonacci es par. También abusa del hecho de que
F
se define por defecto comoFALSE=0
, lo que le permite agregar los valores como base.fuente
R,
4241 bytesAnteriormente, tenía esta solución poco interesante usando una de las fórmulas de OEIS:
fuente
desctools::fibonacci
esonumbers::fibonacci
? Porque esa niebla será un poco más corta.bigz
, que la*apply
clase de funciones convierte a tiporaw
por razones ...Japt , 10 bytes
Pruébalo en línea!
Gracias ETHproductions :)
fuente
PHP,
7370 bytesmostrando variables variables . En). Corre con
-nr
.Descompostura
Los números son nombres de variables perfectamente válidos en PHP.
Pero, para los literales, requieren llaves; es decir
${0}
, no$0
.36 bytes, O (1)
respuesta del puerto de xnor
fuente
PARI / GP, 21 bytes
\
es el cociente enterofuente