File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ (:C "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" :I "AF3K1k1Lx6go+8ur+Qzeli0ClF2LCgRJu6LaYKG56Ys=" :G "efYaXzrEf/hcQsurcPxygQ==")
Original file line number Diff line number Diff line change 1+ (defpackage :aoc/2025/11 #. cl-user::*aoc-use* )
2+ (in-package :aoc/2025/11 )
3+
4+ (defun read-input (&optional (strings (uiop :read-file-lines #P " src/2025/day11.txt" )))
5+ (looping
6+ (dolist (s strings)
7+ (destructuring-bind (from . to)
8+ (split-sequence :split-sequence #\Space s)
9+ (collect! (list* (string-trim " :" from) to))))))
10+
11+
12+ (defun count-paths (from to &optional (input (read-input)))
13+ (let1 memo (make-hash-table :test ' equal)
14+ (recursively ((state from))
15+ (memoizing (memo state)
16+ (cond ((string= state to) 1 )
17+ (t (looping
18+ (dolist (next (assoc-value input state))
19+ (sum! (recur next))))))))))
20+
21+
22+ (defun count-paths-through-fft-and-dac (from to &optional (input (read-input)))
23+ (let1 memo (make-hash-table :test ' equal)
24+ (recursively ((state from)
25+ (fft nil )
26+ (dac nil ))
27+ (memoizing (memo state fft dac)
28+ (cond ((and (string= state to) fft dac) 1 )
29+ (t (looping
30+ (dolist (next (assoc-value input state))
31+ (sum! (recur next
32+ (or fft (string= next " fft" ))
33+ (or dac (string= next " dac" ))))))))))))
34+
35+
36+ (define-solution (2025 11 ) (input read-input)
37+ (values (count-paths " you" " out" input)
38+ (count-paths-through-fft-and-dac " svr" " out" input)))
39+
40+ (define-test (2025 11 ) (688 293263494406608 ))
41+
You can’t perform that action at this time.
0 commit comments