-
Project Euler in Ruby: Problem #2
Problem
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, …
Find the sum of all the even-valued terms in the sequence which do not exceed four million.
Solution
class Fibonacci class << self def upto(max_number) # Initial terms fib = [1,2] loop do # Calculate next term t = fib[-1] + fib[-2] # If next term is less than max_number, append to array and repeat, else break loop t < max_number ? fib << t : break end fib end end end # Add even terms together puts Fibonacci.upto(4_000_000).select { |i| i % 2 == 0 }.reduce :+Returns: 4613732
Tue02Feb