finished up to 14_recursion

This commit is contained in:
Oli Clive-Griffin 2021-06-03 23:17:08 +12:00
parent cc74c04aec
commit c1e56f5c29
2 changed files with 22 additions and 14 deletions

View file

@ -5,31 +5,31 @@
(meditations (meditations
"One may know what they seek by knowing what they do not seek" "One may know what they seek by knowing what they do not seek"
(= [__ __ __] (let [not-a-symbol? (complement symbol?)] (= [true false true] (let [not-a-symbol? (complement symbol?)]
(map not-a-symbol? [:a 'b "c"]))) (map not-a-symbol? [:a 'b "c"])))
"Praise and 'complement' may help you separate the wheat from the chaff" "Praise and 'complement' may help you separate the wheat from the chaff"
(= [:wheat "wheat" 'wheat] (= [:wheat "wheat" 'wheat]
(let [not-nil? ___] (let [not-nil? (complement nil?)]
(filter not-nil? [nil :wheat nil "wheat" nil 'wheat nil]))) (filter not-nil? [nil :wheat nil "wheat" nil 'wheat nil])))
"Partial functions allow procrastination" "Partial functions allow procrastination"
(= 20 (let [multiply-by-5 (partial * 5)] (= 20 (let [multiply-by-5 (partial * 5)]
(___ __))) (multiply-by-5 4)))
"Don't forget: first things first" "Don't forget: first things first"
(= [__ __ __ __] (= [:a :b :c :d]
(let [ab-adder (partial concat [:a :b])] (let [ab-adder (partial concat [:a :b])]
(ab-adder [__ __]))) (ab-adder [:c :d])))
"Functions can join forces as one 'composed' function" "Functions can join forces as one 'composed' function"
(= 25 (let [inc-and-square (comp square inc)] (= 25 (let [inc-and-square (comp square inc)]
(inc-and-square __))) (inc-and-square 4)))
"Have a go on a double dec-er" "Have a go on a double dec-er"
(= __ (let [double-dec (comp dec dec)] (= 8 (let [double-dec (comp dec dec)]
(double-dec 10))) (double-dec 10)))
"Be careful about the order in which you mix your functions" "Be careful about the order in which you mix your functions"
(= 99 (let [square-and-dec ___] (= 99 (let [square-and-dec (comp dec square)]
(square-and-dec 10)))) (square-and-dec 10))))

View file

@ -3,21 +3,29 @@
(defn is-even? [n] (defn is-even? [n]
(if (= n 0) (if (= n 0)
__ true
(___ (is-even? (dec n))))) (not (is-even? (dec n)))))
(defn is-even-bigint? [n] (defn is-even-bigint? [n]
(loop [n n (loop [n n
acc true] acc true]
(if (= n 0) (if (= n 0)
__ acc
(recur (dec n) (not acc))))) (recur (dec n) (not acc)))))
(defn recursive-reverse [coll] (defn recursive-reverse [coll]
__) (loop [coll coll
acc '()]
(if (empty? coll)
acc
(recur (rest coll) (conj acc (first coll))))))
(defn factorial [n] (defn factorial [n]
__) (loop [n n
acc 1]
(if (= n 1)
acc
(recur (dec n) (* acc n)))))
(meditations (meditations
"Recursion ends with a base case" "Recursion ends with a base case"