Progetto Eulero in Haskell #2

2012-04-10 — Articolo di 200 parole - Disponibile in English Programmazione Haskell Progetto Eulero

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.