metya 1 месяц назад
Родитель
Сommit
bf335691f9
1 измененных файлов с 8 добавлено и 4 удалено
  1. 8 4
      aoc2025/day4/day4.py

+ 8 - 4
aoc2025/day4/day4.py

@@ -7,8 +7,10 @@ with open(os.path.join(os.path.dirname(__file__), "example.txt")) as example:
 with open(os.path.join(os.path.dirname(__file__), "input.txt")) as example:
 with open(os.path.join(os.path.dirname(__file__), "input.txt")) as example:
     input_data = example.read().splitlines()
     input_data = example.read().splitlines()
 
 
+
 def bench(part):
 def bench(part):
     import time
     import time
+
     def wrapper(*args, **kwargs):
     def wrapper(*args, **kwargs):
         start = time.perf_counter()
         start = time.perf_counter()
         value = part(*args, **kwargs)
         value = part(*args, **kwargs)
@@ -17,6 +19,7 @@ def bench(part):
 
 
     return wrapper
     return wrapper
 
 
+
 def part1(data):
 def part1(data):
     grid = np.array([list(w) for w in data])
     grid = np.array([list(w) for w in data])
     sum = 0
     sum = 0
@@ -32,6 +35,7 @@ def part1(data):
 
 
     print(f"Part 1: {sum=}")
     print(f"Part 1: {sum=}")
 
 
+
 @bench
 @bench
 def part2(data):
 def part2(data):
     grid = np.array([list(w) for w in data])
     grid = np.array([list(w) for w in data])
@@ -42,7 +46,7 @@ def part2(data):
     can_remove = True
     can_remove = True
     rounds = 0
     rounds = 0
     while can_remove:
     while can_remove:
-        coords2remove = []
+        removed = 0
         for i in range(H - 3 + 2):
         for i in range(H - 3 + 2):
             for j in range(W - 3 + 2):
             for j in range(W - 3 + 2):
                 if grid[i, j] == 1:
                 if grid[i, j] == 1:
@@ -50,12 +54,12 @@ def part2(data):
                     count = np.sum(subgrid)
                     count = np.sum(subgrid)
                     if count < 5:
                     if count < 5:
                         sum += 1
                         sum += 1
-                        coords2remove.append((i, j))
-        if len(coords2remove) == 0:
+                        grid[i, j] = 0
+                        removed += 1
+        if removed == 0:
             can_remove = False
             can_remove = False
         else:
         else:
             rounds += 1
             rounds += 1
-            grid[tuple(zip(*coords2remove))] = 0
 
 
     print(f"Part 2: {sum=} after {rounds} rounds")
     print(f"Part 2: {sum=} after {rounds} rounds")