diff --git a/2025/src/day04.clj b/2025/src/day04.clj new file mode 100644 index 0000000..507d34e --- /dev/null +++ b/2025/src/day04.clj @@ -0,0 +1,41 @@ +(ns day04 + (:require input-manager + core)) + +(def input (input-manager/get-input 2025 4)) + +(def grid (core/map-by-coords input)) + +(def offsets [[-1 -1] [-1 0] [-1 1] + [0 -1] [0 1] + [1 -1] [1 0] [1 1]]) + +;; part 1 +(->> grid + (filter (fn [[_ v]] + (= v \@))) + (map first) + (filter (fn [pos] + (< (count (filter (comp (partial = \@) grid) + (for [o offsets] + (mapv + pos o)))) + 4))) + count) + +;; part 2 +(loop [grid grid + acc 0] + (let [locs + (->> grid + (filter (fn [[_ v]] + (= v \@))) + (map first) + (filter (fn [pos] + (< (count (filter (comp (partial = \@) grid) + (for [o offsets] + (mapv + pos o)))) + 4))))] + (if (empty? locs) + acc + (recur (reduce #(dissoc %1 %2) grid locs) + (+ acc (count locs))))))