summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--day11.py27
1 files changed, 27 insertions, 0 deletions
diff --git a/day11.py b/day11.py
new file mode 100644
index 0000000..e939ed0
--- /dev/null
+++ b/day11.py
@@ -0,0 +1,27 @@
+#!/usr/bin/env python
+
+import numpy as np
+from scipy.ndimage import convolve
+
+with open("day11.txt") as data:
+    octopi = np.array([list(map(int, line.strip())) for line in data])
+
+neighbors = np.ones((3,3), dtype=int)
+step = 0
+flashes = 0
+while True:
+    octopi += 1
+    flashed = np.zeros_like(octopi, dtype=bool)
+    while (flashing := ((octopi > 9) & ~flashed)).any():
+        octopi += convolve(flashing.astype(int), neighbors, mode='constant')
+        flashed |= flashing
+
+    octopi[flashed] = 0
+    flashes += flashed.sum()
+    step += 1
+    if step == 100:
+        print(flashes)
+
+    if np.all(octopi == 0):
+        print(step)
+        break