diff options
| author | Charles <sircharlesaze@gmail.com> | 2020-04-07 17:20:43 +0200 |
|---|---|---|
| committer | Charles <sircharlesaze@gmail.com> | 2020-04-07 17:20:43 +0200 |
| commit | 9af65c8ac721024d0e45a2a6bde5c3f9fe638516 (patch) | |
| tree | e9af93ce9e4d0263b2e76d2fd29ada90d313f334 /lisp/002-even_fibonacci_numbers.lisp | |
| parent | 31b43cf6d0d58812d30c0e2356f6458d06b1e52e (diff) | |
| download | project_euler-9af65c8ac721024d0e45a2a6bde5c3f9fe638516.tar.gz project_euler-9af65c8ac721024d0e45a2a6bde5c3f9fe638516.tar.bz2 project_euler-9af65c8ac721024d0e45a2a6bde5c3f9fe638516.zip | |
problem 1 2 4 in common lisp
Diffstat (limited to 'lisp/002-even_fibonacci_numbers.lisp')
| -rw-r--r-- | lisp/002-even_fibonacci_numbers.lisp | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/lisp/002-even_fibonacci_numbers.lisp b/lisp/002-even_fibonacci_numbers.lisp new file mode 100644 index 0000000..be9ed74 --- /dev/null +++ b/lisp/002-even_fibonacci_numbers.lisp @@ -0,0 +1,24 @@ +;;;; ;;;;;;;; +;;;; 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. +;;;; ;;;;;;;; + +(defun sum (xs) + (if (null xs) + 0 + (+ (car xs) (sum (cdr xs))))) + +(defun fib (x y) + (when (> x 4000000) (return-from fib ())) + (cons x (fib y (+ x y)))) + +(defvar *fibs-below-4m* (fib 1 2)) + +(setf *fibs-below-4m* (remove-if-not #'evenp *fibs-below-4m*)) +(print (sum *fibs-below-4m*)) |
