diff options
| author | mhsn <mail@mhsn.net> | 2025-12-04 09:33:03 +0000 |
|---|---|---|
| committer | mhsn <mail@mhsn.net> | 2025-12-04 09:57:39 +0000 |
| commit | af450561d3273c387baa8ff15cbefc2ff2482486 (patch) | |
| tree | f3d322d388a168582d115bea7c4d1bab609155ac | |
| parent | 7161e9ef6c32923a97c9a6c25877ab0e97254302 (diff) | |
| download | aoc-af450561d3273c387baa8ff15cbefc2ff2482486.tar.gz aoc-af450561d3273c387baa8ff15cbefc2ff2482486.zip | |
25-04 python
| -rwxr-xr-x | 2025/04/python.py | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/2025/04/python.py b/2025/04/python.py new file mode 100755 index 0000000..844c38e --- /dev/null +++ b/2025/04/python.py @@ -0,0 +1,36 @@ +#!/usr/bin/env python3 + +from fileinput import input + +g = { + complex(x, y): ch + for y, line in enumerate(input()) + for x, ch in enumerate(line.strip()) +} + + +def accessible(): + return { + p + for p, x in g.items() + if x == "@" + and sum( + 1 + for dx in (-1, 0, 1) + for dy in (-1j, 0j, 1j) + if dx + dy != 0 and g.get(p + dx + dy, ".") == "@" + ) + < 4 + } + + +silver = len(accessible()) +gold = 0 + +while rem := accessible(): + gold += len(rem) + for gone in rem: + g.pop(gone) + +print("silver:", silver) +print("gold:", gold) |
