this repo has no description

day 7 part 1 solve but messy

Changed files
+56
resources
src
aoc2025
+16
resources/07-test.txt
··· 1 + .......S....... 2 + ............... 3 + .......^....... 4 + ............... 5 + ......^.^...... 6 + ............... 7 + .....^.^.^..... 8 + ............... 9 + ....^.^...^.... 10 + ............... 11 + ...^.^...^.^... 12 + ............... 13 + ..^...^.....^.. 14 + ............... 15 + .^.^.^.^.^...^. 16 + ...............
+40
src/aoc2025/day7.clj
··· 1 + (ns aoc2025.day7 2 + (:require [aoc2025.util :as util] 3 + [clojure.set :as set])) 4 + 5 + (defn parse-file [raw-lines] 6 + (let [[first-row & rest-rows] (mapv util/minv raw-lines)] 7 + {:start [(some #(if (-> % second (= \S)) (first %) nil) first-row)] 8 + :splitters (->> rest-rows 9 + (remove (comp #(= % #{\.}) set #(map second %))) 10 + (map (partial remove #(-> % second (= \.)))) 11 + (map #(map first %)))})) 12 + 13 + (defn- split-beams [beams splitters] 14 + (->> (mapcat #(if ((set splitters) %) ((juxt dec inc) %) [%]) beams) 15 + set 16 + vec 17 + sort)) 18 + 19 + (defn- unsplit-beams [in-beams out-beams] 20 + ((comp sort vec) (set/intersection (set in-beams) (set out-beams)))) 21 + 22 + 23 + ; [7] [7] => [6 8] 24 + ; [6 8] [6 8] => [5 7 7 9] => [5 7 9] 25 + 26 + (let [grid (->> "07.txt" 27 + util/read-file 28 + parse-file) 29 + ;; [first-row & rest-rows] grid 30 + ;; starting-point (get-start first-row) 31 + ;; splitter-indexes (map (partial keep-indexed #(if (= %2 \^) [%1 %2] nil)) rest-rows) 32 + [_ & beam-splits :as all-beams] (reductions split-beams (:start grid) (:splitters grid)) 33 + 34 + ] 35 + 36 + (->> (map (fn [in-beams splitters] 37 + (count (set/intersection (set in-beams) (set splitters)))) 38 + (-> all-beams drop-last) 39 + (:splitters grid)) 40 + (reduce +)))