(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))