Descrizione del problema
Link al problema 2 del Progetto Eulero
Ogni nuovo elemento nella sequenza di Fibonacci è generato sommando i due elementi precedenti. Iniziando con 1 e 2, i primi 10 elementi saranno: 1,2,3,5,8,13,21,34,55,89, …
Considerando gli elementi nella sequenza di Fibonacci i cui valori non eccedono i quattro milioni, trovare la somma degli elementi pari.
ATTENZIONE I prossimi paragrafi contengono la soluzione. Non leggere oltre se vuoi avere i benefici del Progetto Eulero e non hai ancora risolto il problema.
Soluzione
Ci sono molti modi di esprimere la sequenza di Fibonacci in Haskell.
Se scegliamo il più famoso, che fa buon uso delle liste lazy:
fibs = 0 : 1 : zipWith (+) fibs (tail fibs)
Possiamo semplicemente prendere i numeri di Fibonacci fino ai quattro milioni, filtrare quelli pari e sommare il risultato.
solution = (sum . filter even . takeWhile (<4000001)) fibs
Puoi trovare il codice in Literate Haskell su GitHub e su Bitbucket.