+(defn within [n b e] (and (>= n b) (<= n e)))
+
(defn part1pred [lst]
- (or (and (>= (nth lst 0) (nth lst 2))
- (<= (nth lst 1) (nth lst 3)))
- (and (>= (nth lst 2) (nth lst 0))
- (<= (nth lst 3) (nth lst 1)))))
+ (or (and (>= (nth lst 0) (nth lst 2)) (<= (nth lst 1) (nth lst 3)))
+ (and (>= (nth lst 2) (nth lst 0)) (<= (nth lst 3) (nth lst 1)))))
(defn part2pred [lst]
- (or (and (>= (nth lst 0) (nth lst 2)) (<= (nth lst 0) (nth lst 3)))
- (and (>= (nth lst 1) (nth lst 2)) (<= (nth lst 1) (nth lst 3)))
- (and (>= (nth lst 2) (nth lst 0)) (<= (nth lst 2) (nth lst 1)))
- (and (>= (nth lst 3) (nth lst 0)) (<= (nth lst 3) (nth lst 1)))))
+ (or (within (nth lst 0) (nth lst 2) (nth lst 3))
+ (within (nth lst 1) (nth lst 2) (nth lst 3))
+ (within (nth lst 2) (nth lst 0) (nth lst 1))
+ (within (nth lst 3) (nth lst 0) (nth lst 1))))
(def count-filtered (comp println count filter))