tangled
alpha
login
or
join now
m1emi1em.dev
/
aoc2025
1
fork
atom
this repo has no description
1
fork
atom
overview
issues
pulls
pipelines
Day 7 Part 1 Proper
m1emi1em.dev
3 months ago
2faa5fc0
300a3525
+16
-22
1 changed file
expand all
collapse all
unified
split
src
aoc2025
day7.clj
+16
-22
src/aoc2025/day7.clj
···
11
11
(map #(map first %)))}))
12
12
13
13
(defn- split-beams [beams splitters]
14
14
-
(->> (mapcat #(if ((set splitters) %) ((juxt dec inc) %) [%]) beams)
15
15
-
set
16
16
-
vec
17
17
-
sort))
18
18
-
19
19
-
(defn- unsplit-beams [in-beams out-beams]
20
20
-
((comp sort vec) (set/intersection (set in-beams) (set out-beams))))
14
14
+
(set (mapcat #(if ((set splitters) %) ((juxt dec inc) %) [%]) beams)))
21
15
22
22
-
23
23
-
; [7] [7] => [6 8]
24
24
-
; [6 8] [6 8] => [5 7 7 9] => [5 7 9]
25
25
-
26
26
-
(let [grid (->> "07.txt"
27
27
-
util/read-file
28
28
-
parse-file)
29
29
-
;; [first-row & rest-rows] grid
30
30
-
;; starting-point (get-start first-row)
31
31
-
;; splitter-indexes (map (partial keep-indexed #(if (= %2 \^) [%1 %2] nil)) rest-rows)
32
32
-
[_ & beam-splits :as all-beams] (reductions split-beams (:start grid) (:splitters grid))
16
16
+
;; (defn- unsplit-beams [in-beams out-beams]
17
17
+
;; ((comp sort vec) (set/intersection (set in-beams) (set out-beams))))
33
18
34
34
-
]
35
35
-
19
19
+
(defn- part1 [{start :start splitters :splitters}]
36
20
(->> (map (fn [in-beams splitters]
37
21
(count (set/intersection (set in-beams) (set splitters))))
38
38
-
(-> all-beams drop-last)
39
39
-
(:splitters grid))
22
22
+
(->> splitters (reductions split-beams start) drop-last)
23
23
+
splitters)
40
24
(reduce +)))
25
25
+
26
26
+
(defn- part2 [_] nil)
27
27
+
28
28
+
(defn solve
29
29
+
([] (solve "07.txt"))
30
30
+
([fname]
31
31
+
(->> fname util/read-file parse-file ((juxt part1 part2)))))
32
32
+
33
33
+
(solve "07-test.txt")
34
34
+
;(solve)