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

questionAnswers(17)

yourAnswerToTheQuestion