diff --git a/src/predicates.clj b/src/predicates.clj index 158b1ea..363bd36 100644 --- a/src/predicates.clj +++ b/src/predicates.clj @@ -1,41 +1,47 @@ (ns predicates) (defn sum-f [f g x] - :-) + (+ (f x) (g x))) (defn less-than [n] - :-) + (fn [x] (< x n))) (defn equal-to [n] - :-) + (fn [x] (== x n))) (defn set->predicate [a-set] - :-) + (fn [a-key] (contains? a-set a-key))) (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 (empty? string) + (nil? string) + (every? whitespace? string))) (defn has-award? [book award] - :-) + (contains? (:awards book) award)) (defn HAS-ALL-THE-AWARDS? [book awards] - :-) + (let [ha? (fn [b] (fn [a] (has-award? b a)))] + (every? (ha? book) awards))) (defn my-some [pred a-seq] - :-) + (let [is-false? (fn [x] (= x false))] + (first + (filter (complement is-false?) (map pred a-seq))))) (defn my-every? [pred a-seq] - :-) + (= (count a-seq) (count (filter pred a-seq)))) (defn prime? [n] - :-) + (let [divides? (fn [n] (fn [d] (= 0 (rem n d))))] + (not (some (divides? n) (range 2 n))))) ;^^