Parece que todavía no hay un concurso para este.
La tarea es simple. Agregue los primeros nnú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) = 0lugar 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
Use reemplaza en el código con00, ¿podría eso ahorrarle un byte?4*conzy2+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 primerosnnúmeros pares de Fibonacci sonF_{i*3}paraien[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)+2como un filtro recursivo :En nuestro caso
A = [1 -4 -1],,B = 2y la entradaxdebe ser un vector de unos, con el resultado que aparece como la última entrada de la saliday. Sin embargo, establecemos0el primer valor de la entrada para que0aparezca una inicial en la salida, según sea necesario.'FAD'-69es solo una forma más corta de producir el vector coeficienteA = [1 -4 -1]; y(1:n)>1produce 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)/2fó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)/2formulació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
fcon una llamada mayorNque 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>1por Gary Detlefsa n|n>1=4*a(n-1)+a(n-2)+2|n<2=0fuente
n<=1enteros esn<2. Además, la segunda condición no necesita ser la negación de la primera (lo idiomáticootherwisees simplementeTrue), por lo que habitualmente en el golf1<2se usa algo así .Mathematica,
3227 bytesCrédito a xnor . Guardado 5 bytes gracias a JungHwan Min.
fuente
(Fibonacci(3*n+2) - 1)/2o 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
Fse 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::fibonacciesonumbers::fibonacci? Porque esa niebla será un poco más corta.bigz, que la*applyclase de funciones convierte a tiporawpor 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