Для хорошего решения, почему бы вам не создать генератор чисел Фибоначчи, как Prime
или Triangular
пример, который я дал здесь .
Из этого вы можетеиспользуйте хорошие Enumerable
методы для решения проблемы.Возможно, вы захотите спросить, существует ли какой-либо шаблон для четных чисел Фибоначчи.
Отредактируйте свой вопрос, чтобы опубликовать свое решение ...
Примечание: существуют более эффективные способы, чем перечислять ихно они требуют больше математики, не будут столь же ясны, как это, и будут сиять, только если 4 миллиона были намного выше.
Поскольку demas 'опубликовал решение, вот исправленная версия:
class Fibo
class << self
include Enumerable
def each
return to_enum unless block_given?
a = 0; b = 1
loop do
a, b = b, a + b
yield a
end
end
end
end
puts Fibo.take_while { |i| i < 4000000 }.
select(&:even?).
inject(:+)