-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathday11_task2.py
More file actions
75 lines (60 loc) · 1.9 KB
/
Copy pathday11_task2.py
File metadata and controls
75 lines (60 loc) · 1.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
###############################################################################
# Day 11, Task 1 #
###############################################################################
import aoc_util
day = 11
data_str = """5483143223
2745854711
5264556173
6141336146
6357385478
4167524645
2176841721
6882881134
4846848554
5283751526"""
def flash_octi(octi, row, col):
flashes = 0
octi[row][col] += 1
if octi[row][col] == 10:
flashes += 1
if row > 0:
flashes += flash_octi(octi, row - 1, col)
if col > 0:
flashes += flash_octi(octi, row - 1, col - 1)
if col < len(octi[0]) - 1:
flashes += flash_octi(octi, row - 1, col + 1)
if col > 0:
flashes += flash_octi(octi, row, col - 1)
if col < len(octi[0]) - 1:
flashes += flash_octi(octi, row, col + 1)
if row < len(octi) - 1:
flashes += flash_octi(octi, row + 1, col)
if col > 0:
flashes += flash_octi(octi, row + 1, col - 1)
if col < len(octi[0]) - 1:
flashes += flash_octi(octi, row + 1, col + 1)
return flashes
def task(data_set: list[str]) -> int:
octi = []
for i in data_set:
row = []
for o in i:
row.append(int(o))
octi.append(row)
step = 0
while 1:
step += 1
flashes = 0
for row in range(len(octi)):
for col in range(len(octi[0])):
flashes += flash_octi(octi, row, col)
for i in range(len(octi)):
for j in range(len(octi[0])):
if octi[i][j] > 9:
octi[i][j] = 0
if flashes == len(octi) * len(octi[0]):
return step
return flashes
aoc_util.run_with_data_str(task, data_str)
aoc_util.run_with_data_set(task, day)