aboutsummaryrefslogtreecommitdiff
path: root/2025/11/puzzle-2.py
diff options
context:
space:
mode:
authorThomas Voss <thomas.voss@humanwave.nl> 2025-12-11 10:58:18 +0100
committerThomas Voss <thomas.voss@humanwave.nl> 2025-12-11 10:58:18 +0100
commit40fc3368e8d70b8279158fed2547f0025a4f6aa9 (patch)
treedb63bd42206e1b8c18d91a0da4bbe547b51f03ef /2025/11/puzzle-2.py
parentb4431851ea5b0a9b82c38e13fcbe0301d4a42e0d (diff)
Add 2025 day 11 solutions
Diffstat (limited to '2025/11/puzzle-2.py')
-rwxr-xr-x2025/11/puzzle-2.py37
1 files changed, 37 insertions, 0 deletions
diff --git a/2025/11/puzzle-2.py b/2025/11/puzzle-2.py
new file mode 100755
index 0000000..629c10c
--- /dev/null
+++ b/2025/11/puzzle-2.py
@@ -0,0 +1,37 @@
+#!/usr/bin/python3
+
+import functools
+
+
+paths: dict[str, list[str]] = {}
+
+def main() -> None:
+ with open('input', 'r') as f:
+ for line in f.readlines():
+ x, *xs = line.split()
+ paths[x[:-1]] = xs
+
+ print(npaths('svr', 'out'))
+
+
+@functools.cache
+def npaths(
+ src: str,
+ dst: str,
+ dacp: bool = False,
+ fftp: bool = False,
+) -> bool | int:
+ return (
+ dacp and fftp
+ if src == dst else
+ sum(npaths(
+ nsrc,
+ dst,
+ dacp or src == 'dac',
+ fftp or src == 'fft',
+ ) for nsrc in paths[src])
+ )
+
+
+if __name__ == '__main__':
+ main()