aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--clojure/001-multiples_of_3_or_5.clj18
-rw-r--r--clojure/002-even_fibonacci_numbers.clj29
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)