Frans Bergman 3 years ago
parent
commit
62255e2d88
3 changed files with 58 additions and 0 deletions
  1. 10 0
      11.input
  2. 38 0
      11.py
  3. 10 0
      11.small.input

+ 10 - 0
11.input

@@ -0,0 +1,10 @@
+6744638455
+3135745418
+4754123271
+4224257161
+8167186546
+2268577674
+7177768175
+2662255275
+4655343376
+7852526168

+ 38 - 0
11.py

@@ -0,0 +1,38 @@
+from util import get_input
+
+input = get_input("11.input")
+
+grid = [[int(a) for a in line] for line in input]
+
+def run_steps(grid, n=100):
+    tot_flash = 0
+    for i in range(n):
+        grid = [[a + 1 for a in row] for row in grid]
+        flashed = set()
+        while True:
+            did_flash = False
+            for x, row in enumerate(grid):
+                for y, a in enumerate(row):
+                    if a > 9 and (x, y) not in flashed:
+                        did_flash = True
+                        flashed = flashed.union(set([(x, y)]))
+                        for dx, dy in [(-1, -1), (-1, 0), (-1, 1), (0, -1), (0, 1), (1, -1), (1, 0), (1, 1)]:
+                            if x + dx < 0 or y + dy < 0:
+                                continue
+                            try:
+                                grid [x + dx] [y + dy] += 1
+                            except IndexError:
+                                continue
+            if not did_flash:
+                break
+        for (x, y) in list(flashed):
+            grid[x][y] = 0
+        tot_flash += len(flashed)
+        if len(flashed) == len(grid) * len(grid[0]):
+            print("Part 2:", i + 1)
+            return 0
+
+    return tot_flash
+
+print("Part 1:", run_steps(grid, 100))
+run_steps(grid, 1000)

+ 10 - 0
11.small.input

@@ -0,0 +1,10 @@
+5483143223
+2745854711
+5264556173
+6141336146
+6357385478
+4167524645
+2176841721
+6882881134
+4846848554
+5283751526