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 | |
| parent | b4431851ea5b0a9b82c38e13fcbe0301d4a42e0d (diff) | |
Add 2025 day 11 solutions
| -rwxr-xr-x | 2025/11/puzzle-1.awk | 20 | ||||
| -rwxr-xr-x | 2025/11/puzzle-2.py | 37 |
2 files changed, 57 insertions, 0 deletions
diff --git a/2025/11/puzzle-1.awk b/2025/11/puzzle-1.awk new file mode 100755 index 0000000..2969c24 --- /dev/null +++ b/2025/11/puzzle-1.awk @@ -0,0 +1,20 @@ +#!/usr/bin/gawk -f + +function npaths(src, dst, n, i) +{ + if (src == dst) + return 1; + n = 0 + for (i in paths[src]) + n += npaths(paths[src][i], dst) + return n +} + +BEGIN { FS = ":? " } + +{ + for (i = 2; i <= NF; i++) + paths[$1][i - 1] = $i +} + +END { print npaths("you", "out") } 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() |