Project Euler in Haskell #2

2012-04-10 — Article of 200 words - Available in Italiano Programming Haskell Project Euler

Problem Description

Link to Project Euler problem 2

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.

WARNING Solution ahead. Don’t read more if you want to enjoy the benefits of Project Euler and you haven’t already solved the problem.

Solution

There are many ways to express the Fibonacci sequence in Haskell.

If we choose one of the most famous, which makes good use of Haskell lazy lists:

fibs = 0 : 1 : zipWith (+) fibs (tail fibs)

We can simply take the Fibonacci numbers up to four million, filter the even ones and sum the result.

solution = (sum . filter even . takeWhile (<4000001)) fibs

You can find the Literate Haskell code on GitHub and on Bitbucket.