diff options
| author | Charles Cabergs <me@cacharle.xyz> | 2021-07-27 11:37:47 +0200 |
|---|---|---|
| committer | Charles Cabergs <me@cacharle.xyz> | 2021-07-27 11:37:47 +0200 |
| commit | 726c5ce4decbcd354aff50d1a486bca8c2fa33c1 (patch) | |
| tree | e96850f51e63789d6dcba3470de1258ec9a6232b /scheme/002-even_fibonacci_numbers.scm | |
| parent | a13cc209e002a72a18c659d22ed39dbd99be2fcd (diff) | |
| download | project_euler-726c5ce4decbcd354aff50d1a486bca8c2fa33c1.tar.gz project_euler-726c5ce4decbcd354aff50d1a486bca8c2fa33c1.tar.bz2 project_euler-726c5ce4decbcd354aff50d1a486bca8c2fa33c1.zip | |
problem 1 2 in scheme
Diffstat (limited to 'scheme/002-even_fibonacci_numbers.scm')
| -rw-r--r-- | scheme/002-even_fibonacci_numbers.scm | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/scheme/002-even_fibonacci_numbers.scm b/scheme/002-even_fibonacci_numbers.scm new file mode 100644 index 0000000..65b567d --- /dev/null +++ b/scheme/002-even_fibonacci_numbers.scm @@ -0,0 +1,33 @@ +;;;; +;; Even Fibonacci numbers +;; 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. +;;;; + +(load "utils.scm") + +(define +top+ 4000000) + +(define fib + (lambda (n) + (case n + ((0) 1) + ((1) 1) + (else (+ (fib (- n 1)) + (fib (- n 2))))))) + +(define result + (sum + (filter (lambda (x) (= 0 (modulo x 2))) + (do ((x 1 (+ x 1)) + (f 1 (fib x)) + (fs '())) + ((>= f +top+) fs) + (set! fs (cons f fs)))))) + +(display result) |
