USING: kernel math sequences ; IN: euler.002 ! http://projecteuler.net/index.php?section=problems&id=2 ! DESCRIPTION ! ----------- ! 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 ! -------- >r -roll r> ; : (+total) ( total fib- fib+ -- newtotal fib- fib+ ) rot over + -rot ; : (sum-even-fibs-below) ( max total fib- fib+ -- sum ) (max-exceeded?) [ 2drop swap drop ] [ dup even? [ (+total) ] [ ] if (next-fibs) (sum-even-fibs-below) ] if ; PRIVATE> : sum-even-fibs-below ( max -- sum ) 0 0 1 (sum-even-fibs-below) ; : euler002 ( -- answer ) 4000000 sum-even-fibs-below ; MAIN: euler002