Skip to content

Instantly share code, notes, and snippets.

@Jesus
Created November 1, 2018 10:33
Show Gist options
  • Save Jesus/03d04528aa8c4cb4ef1ebf554b4677d3 to your computer and use it in GitHub Desktop.
Save Jesus/03d04528aa8c4cb4ef1ebf554b4677d3 to your computer and use it in GitHub Desktop.
class Fibonacci < Enumerator::Lazy
def initialize
@past_numbers = []
super(1..Float::INFINITY) do |yielder, i|
if i == 1 || i == 2
@past_numbers << i
yielder << i
else
fib_value = @past_numbers[0] + @past_numbers[1]
@past_numbers.shift
@past_numbers << fib_value
yielder << fib_value
end
end
end
end
puts Fibonacci.new
.take_while { |n| n < 4_000_000 }
.select(&:even?)
.inject(0) { |a, b| a + b }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment