Fibonacci One-Liner
Estou tentando resolver perguntas deProject Euler em ruby one-liners, e estou curioso para saber se há uma solução mais elegante para pergunta dois:
Cada novo termo na sequência de Fibonacci é gerado adicionando os dois termos anteriores. Começando com 1 e 2, os 10 primeiros termos serão:
1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
Considerando os termos da sequência de Fibonacci cujos valores não excedem quatro milhões, encontre a soma dos termos com valores pare
qui está a minha solução de uma linha em Rub
(1..32).inject([0,1]) {|arr, i| (arr << arr[-1] + arr[-2] if arr[-1] + arr[-2] <= 4000000) || arr}.inject(0) {|total, i| total += i.even? ? i : 0}
Minha principal preocupação aqui é que eu estou usando o intervalo (1 .. 32) apenas porque sei que isso é tudo o que é necessário até que os números na sequência de Fibonacci comecem a exceder 4.000.000. Eu preferiria que isso fosse incorporado à linha única de alguma forma, mas não consegui descobri
Ponto-e-vírgula não são permitido