aboutsummaryrefslogtreecommitdiffstats
path: root/AoC2022/aocclj/src
diff options
context:
space:
mode:
Diffstat (limited to 'AoC2022/aocclj/src')
-rw-r--r--AoC2022/aocclj/src/aocclj/day04.clj23
1 files changed, 23 insertions, 0 deletions
diff --git a/AoC2022/aocclj/src/aocclj/day04.clj b/AoC2022/aocclj/src/aocclj/day04.clj
new file mode 100644
index 0000000..5b03eeb
--- /dev/null
+++ b/AoC2022/aocclj/src/aocclj/day04.clj
@@ -0,0 +1,23 @@
+(ns aocclj.day04
+ (:require [clojure.string :as str]))
+
+(defn subinterval [a0 a1 b0 b1]
+ (and (<= a0 b0) (>= a1 b1)))
+
+(defn subcontained [a0 a1 b0 b1]
+ (or (subinterval a0 a1 b0 b1)
+ (subinterval b0 b1 a0 a1)))
+
+(defn overlap [a0 a1 b0 b1]
+ "Test if [b0;b1] overlaps [a0;a1]"
+ (and (<= a0 b1) (<= b0 a1)))
+
+(defn solver [func input]
+ (transduce
+ (comp
+ (map #(str/split % #"[,-]"))
+ (map (partial map parse-long))
+ (map #(apply func %))
+ (map #(if (true? %) 1 0)))
+ +
+ input))