diff options
| author | Thomas Voss <thomas.voss@humanwave.nl> | 2025-12-11 10:58:18 +0100 |
|---|---|---|
| committer | Thomas Voss <thomas.voss@humanwave.nl> | 2025-12-11 10:58:18 +0100 |
| commit | 40fc3368e8d70b8279158fed2547f0025a4f6aa9 (patch) | |
| tree | db63bd42206e1b8c18d91a0da4bbe547b51f03ef /2025/11/puzzle-2.py | |
| parent | b4431851ea5b0a9b82c38e13fcbe0301d4a42e0d (diff) | |
Add 2025 day 11 solutions
Diffstat (limited to '2025/11/puzzle-2.py')
| -rwxr-xr-x | 2025/11/puzzle-2.py | 37 |
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() |