Skip to content

Instantly share code, notes, and snippets.

@tinomen
Created September 25, 2013 02:35
Show Gist options
  • Save tinomen/6694488 to your computer and use it in GitHub Desktop.
Save tinomen/6694488 to your computer and use it in GitHub Desktop.
positive Fibonacci sum
Each new term in the Fibonacci sequence is generated by adding the previous two terms. By starting with 1 and 2, the first 10 terms will be:
1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
By considering the terms in the Fibonacci sequence whose values do not exceed four million, find the sum of the even-valued terms.
@aemadrid
Copy link

Took Jake's code and made it easier to understand

terms = [1, 2]
even_numbers = [terms.last]
ceiling = 4_000_000

begin
  next_t = terms.inject(0) { |t, x| t + x }
  terms = [terms.last, next_t]
  if terms.last < ceiling && terms.last.even?
    even_numbers << terms.last
  end
end while terms.last < ceiling

puts even_numbers.inject(0) { |t, x| t + x }

@scizo
Copy link

scizo commented Sep 25, 2013

def fibs
  Enumerator.new do |y|
    a, b = 0, 1
    loop do
      y << a
      a, b = b, a + b
    end
  end
end

puts fibs.take_while{|n| n <= 4E6}.select(&:even?).reduce(:+)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment