Parece não haver um concurso para este ainda.
A tarefa é simples. Adicione os primeiros n
números da sequência de Fibonacci que são pares e produza o resultado.
Isso é dado pelo OEIS A099919 , exceto que a sequência é alterada por um, começando comfib(1) = 0
vez de fib(1) = 1
.
Isso é código de golfe. O menor número de bytes vence.
Exemplos
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
fonte
fonte
Respostas:
Oásis ,
875 bytes1 byte salvo graças a @ETHProductions e mais 2 salvos graças a @Adnan!
Experimente online!
Explicação:
Isso usa a mesma fórmula de recorrência que minha resposta MATL.
fonte
U
é substituído no código por00
, isso pode lhe poupar um byte?4*
comz
e2+
com»
:)Python, 33 bytes
Experimente online
Fórmula mágica!
fonte
a(n) = (-10 + (5-3*sqrt(5))*(2-sqrt(5))^n + (2+sqrt(5))^n*(5+3*sqrt(5)))/20
(Colin Barker, 26 de novembro de 2016) a partir da página OEISPython 2 , 35 bytes
Experimente online!
fonte
Na verdade , 6 bytes
Experimente online!
Explicação:
Cada terceiro número de Fibonacci (começando de
F_0 = 0
) é par. Assim, os primeirosn
números pares de Fibonacci sãoF_{i*3}
parai
in[0, n)
.fonte
JavaScript (ES6), 27 bytes
Recursão ao resgate! Isso usa uma das fórmulas na página OEIS:
(mas alterado por um porque o desafio o altera por um)
fonte
Pyke, 6 bytes
Experimente aqui!
fonte
Perl 6 ,
38 3532 bytesTente
Tente
Tente
Expandido:
fonte
Oitava ,
363533 bytesExperimente online!
Explicação
Esta função anônima implementa a equação da diferença
a(n) = 4*a(n-1)+a(n-2)+2
como um filtro recursivo :No nosso caso
A = [1 -4 -1]
,B = 2
e a entradax
deve ser um vetor de uns, com o resultado que aparece como a última entrada da saíday
. No entanto, definimos0
o primeiro valor da entrada para que um valor inicial0
apareça na saída, conforme necessário.'FAD'-69
é apenas uma maneira mais curta de produzir o vetor de coeficienteA = [1 -4 -1]
; e(1:n)>1
produz o vetor de entradax = [0 1 1 ... 1]
.fonte
dc ,
2522 bytesExperimente online!
Ou salve o programa em um arquivo e execute-o digitando
O programa aceita um número inteiro não negativo n em stdin e gera a soma do primeiro n números de Fibonacci mesmo em stdout. (A sequência de Fibonacci é usada para começar com 0, conforme os exemplos do OP.)
Este programa usa a fórmula (F (3n-1) -1) / 2 para a soma dos primeiros n números Fibonacci pares, em que F é a função usual de Fibonacci, dada por F (0) = 0, F (1) = 1, F (n) = F (n-2) + F (n-1) para n> = 2.
dc é uma calculadora baseada em pilha. Aqui está uma explicação detalhada:
Neste ponto, o número (1 + sqrt (5)) / 2 está no topo da pilha.
Nesse ponto, 3n-1 está no topo da pilha (onde n é a entrada) e (1 + sqrt (5)) / 2 é o segundo da parte superior.
Nesse ponto, o número no topo da pilha é (((1 + sqrt (5)) / 2) ^ (3n-1)) / sqrt (5). O número inteiro mais próximo desse número é F (3n-1). Observe que F (3n-1) é sempre um número ímpar.
fonte
Mathematica,
2721 bytesAgradecimentos a xnor por apontar uma fórmula alternativa, alefalpha por corrigir o índice inicial
fonte
(Fibonacci(3*n+2)-1)/2
fórmula pode ser mais curta?MATL ,
1514 bytesExperimente online!
Explicação
Isso usa uma das fórmulas de recorrência do OEIS:
Para entrada N, o código itera N vezes, o que é 2 vezes mais que o necessário. Isto é compensado por definição
0
,0
(em vez de0
,2
) como valores iniciais, e por exclusão do último valor obtido e exibindo o anterior.fonte
Lote, 80 bytes
Usa o fato de que cada terceiro número de Fibonacci é par e apenas os calcula três por vez (calcular mais de um por vez é realmente mais fácil, pois você não precisa trocar valores). Eu tentei o
(Fibonacci(3*n+2)-1)/2
formulação, mas na verdade é alguns bytes mais (t+=
acaba sendo bastante eficiente em termos de tamanho do código).fonte
C,
823836 bytes2 bytes salvos graças a @BrainSteel
As fórmulas na página OEIS tornaram muito mais curtas:
Experimente online!
82 bytes:
A primeira versão tem 75 bytes, mas a função não é reutilizável, a menos que você sempre chame
f
com mais doN
que a chamada anterior :-)Minha primeira resposta aqui. Não checou nenhuma outra resposta nem o OEIS. Eu acho que existem alguns truques que eu posso aplicar para torná-lo mais curto :-)
fonte
a(n){return--n<1?0:4*a(n)+a(n-1)+2;}
(36 bytes)Haskell (
3231 bytes)Guardou um byte graças a @ChristianSievers.
Usando a fórmula dada em 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
fonte
n<=1
para números inteiros én<2
. Além disso, a segunda condição não precisa ser a negação da primeira (a idiomáticaotherwise
é simplesmenteTrue
); portanto, geralmente no golfe1<2
é usado algo parecido .Mathematica,
3227 bytesCrédito para xnor . Economizou 5 bytes graças a JungHwan Min.
fonte
(Fibonacci(3*n+2) - 1)/2
ou escrever o sumi?(* Vincenzo Librandi, Mar 15 2014 *)
no post, como é em OEIS.)R, 42 bytes
Solução não recursiva, em contraste com a solução anterior de @rtrunbull aqui .
Usa a propriedade que cada terceiro valor da sequência de Fibonacci é par. Também abusa do fato de que,
F
por padrão, é definido comoFALSE=0
, permitindo que ele adicione os valores como base.fonte
R,
42bytesAnteriormente, eu tinha essa solução desinteressante usando uma das fórmulas do OEIS:
fonte
desctools::fibonacci
nãonumbers::fibonacci
pode? Porque essa névoa é um pouco mais curta.bigz
, qual a*apply
classe de funções convertidos para digitarraw
porque razões ...Japonês , 10 bytes
Experimente online!
Obrigado ETHproductions :)
fonte
PHP,
7370 bytesapresentando variáveis variáveis . Em). Corra com
-nr
.demolir
Os números são nomes de variáveis perfeitamente válidos no PHP.
Mas, para os literais, eles exigem aparelho; ou seja
${0}
, não$0
.36 bytes, O (1)
resposta do porto da xnor
fonte
PARI / GP, 21 bytes
\
é o quociente inteiro.fonte