diff options
| author | Charles Cabergs <me@cacharle.xyz> | 2021-07-26 18:15:52 +0200 |
|---|---|---|
| committer | Charles Cabergs <me@cacharle.xyz> | 2021-07-26 18:15:52 +0200 |
| commit | a13cc209e002a72a18c659d22ed39dbd99be2fcd (patch) | |
| tree | a07cf06c17b8521020d34d7a4f07191c4141c61a /clojure | |
| parent | 474d03cbb64fa822e2ab4f360ff699d98c666282 (diff) | |
| download | project_euler-a13cc209e002a72a18c659d22ed39dbd99be2fcd.tar.gz project_euler-a13cc209e002a72a18c659d22ed39dbd99be2fcd.tar.bz2 project_euler-a13cc209e002a72a18c659d22ed39dbd99be2fcd.zip | |
problem 1 2 in clojure
Diffstat (limited to 'clojure')
| -rw-r--r-- | clojure/001-multiples_of_3_or_5.clj | 18 | ||||
| -rw-r--r-- | clojure/002-even_fibonacci_numbers.clj | 29 |
2 files changed, 47 insertions, 0 deletions
diff --git a/clojure/001-multiples_of_3_or_5.clj b/clojure/001-multiples_of_3_or_5.clj new file mode 100644 index 0000000..6547861 --- /dev/null +++ b/clojure/001-multiples_of_3_or_5.clj @@ -0,0 +1,18 @@ +;;;; +;; Multiples of 3 or 5 +;; Problem 1 +;; +;; If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 +;; and 9. The sum of these multiples is 23. +;; Find the sum of all the multiples of 3 or 5 below 1000. +;;;; + +(def +top+ 1000) + +(def result + (reduce + + (for [x (range 1 +top+) + :when (or (= (mod x 3) 0) (= (mod x 5) 0))] + x))) + +(println result) diff --git a/clojure/002-even_fibonacci_numbers.clj b/clojure/002-even_fibonacci_numbers.clj new file mode 100644 index 0000000..092f23c --- /dev/null +++ b/clojure/002-even_fibonacci_numbers.clj @@ -0,0 +1,29 @@ +;;;; +;; 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. +;;;; + +(def fib + (memoize (fn [n] + (case n + 0 1 + 1 1 + (+' (fib (-' n 1)) (fib (-' n 2))))))) + +(def +top+ 4000000) + +(def result + (reduce + + (for [x (range 1 1000) + :let [f (fib x)] + :when (= (mod f 2) 0) + :while (< f +top+)] + f))) + +(println result) |
