From a9b1c3598480a9e7bdc3f28aedbea2cd2032dba5 Mon Sep 17 00:00:00 2001 From: ajet Date: Thu, 4 Dec 2025 09:53:17 -1000 Subject: [PATCH] do day 4 --- 2025/src/day04.clj | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 2025/src/day04.clj 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))))))