summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormhsn <mail@mhsn.net>2025-12-04 09:33:03 +0000
committermhsn <mail@mhsn.net>2025-12-04 09:57:39 +0000
commitaf450561d3273c387baa8ff15cbefc2ff2482486 (patch)
treef3d322d388a168582d115bea7c4d1bab609155ac
parent7161e9ef6c32923a97c9a6c25877ab0e97254302 (diff)
downloadaoc-af450561d3273c387baa8ff15cbefc2ff2482486.tar.gz
aoc-af450561d3273c387baa8ff15cbefc2ff2482486.zip
25-04 python
-rwxr-xr-x2025/04/python.py36
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)