From 98c8666814f0a2fea77b74499c94e01d46dd0c0e Mon Sep 17 00:00:00 2001 From: Daniel Date: Sun, 6 Feb 2022 15:08:54 +0200 Subject: [PATCH] all tests passed --- .gitignore | 2 ++ predicates.iml | 56 ++++++++++++++++++++++++++++++++++++++++++++++ src/predicates.clj | 31 +++++++++++++++---------- 3 files changed, 77 insertions(+), 12 deletions(-) create mode 100644 predicates.iml diff --git a/.gitignore b/.gitignore index 69ab9db..7134c66 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,5 @@ /checkouts /.lein-deps-sum /.lein-plugins +.idea +.nrepl-port diff --git a/predicates.iml b/predicates.iml new file mode 100644 index 0000000..4543c93 --- /dev/null +++ b/predicates.iml @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/predicates.clj b/src/predicates.clj index 158b1ea..5ce1f2c 100644 --- a/src/predicates.clj +++ b/src/predicates.clj @@ -1,41 +1,48 @@ (ns predicates) (defn sum-f [f g x] - :-) + (+ (f x) (g x))) (defn less-than [n] - :-) + (fn [k] (< k n))) (defn equal-to [n] - :-) + (fn [k] (== k n))) (defn set->predicate [a-set] - :-) + (fn [k] (contains? a-set k))) (defn pred-and [pred1 pred2] - :-) + (fn [k] (and (pred1 k) (pred2 k)))) (defn pred-or [pred1 pred2] - :-) + (fn [k] (or (pred1 k) (pred2 k)))) (defn whitespace? [character] (Character/isWhitespace character)) (defn blank? [string] - :-) + (every? whitespace? string)) (defn has-award? [book award] - :-) + (contains? (:awards book) award)) (defn HAS-ALL-THE-AWARDS? [book awards] - :-) + (every? (fn [award] (has-award? book award)) awards)) (defn my-some [pred a-seq] - :-) + (let [filtered (filter pred a-seq)] + (if (empty? filtered) + false + (pred (first filtered))) + )) (defn my-every? [pred a-seq] - :-) + (empty? (filter (complement pred) a-seq))) (defn prime? [n] - :-) + (let [divides? (fn [divisor] + (filter (fn [num] (== (mod n num) 0)) (range 2 (inc divisor))))] + (empty? (divides? (int (Math/sqrt n)))) + )) ;^^