From f2fd42c76d51eb182dc47479561be5dda98ca2c1 Mon Sep 17 00:00:00 2001 From: Markus Jantunen Date: Mon, 31 Jul 2017 14:20:51 +0300 Subject: [PATCH] Fifth set done --- src/predicates.clj | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/src/predicates.clj b/src/predicates.clj index 158b1ea..a030901 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 [x] (contains? a-set x))) (defn pred-and [pred1 pred2] - :-) + (fn [x] (and (pred1 x) (pred2 x)))) (defn pred-or [pred1 pred2] - :-) + (fn [x] (or (pred1 x) (pred2 x)))) (defn whitespace? [character] (Character/isWhitespace character)) (defn blank? [string] - :-) + (or (every? whitespace? string) (= 0 (count string)))) (defn has-award? [book award] - :-) + (contains? (:awards book) award)) (defn HAS-ALL-THE-AWARDS? [book awards] - :-) + (every? (:awards book) awards)) (defn my-some [pred a-seq] - :-) + (let [filtered (filter (fn [x] (pred x)) a-seq)] + (cond + (empty? filtered) false + (= pred first) (apply int (first filtered)) + :else true + ))) (defn my-every? [pred a-seq] - :-) + (let [filtered (filter (fn [x] ((complement pred) x)) a-seq)] + (empty? filtered))) (defn prime? [n] - :-) + (let [pred (fn [x] (and (pos? (/ x x)) (pos? (/ x 1))))] + (not (some pred (range 2 n))))) ;^^