-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDay11.py
84 lines (72 loc) · 2.02 KB
/
Day11.py
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
76
77
78
79
80
81
82
83
input="""6788383436
5526827441
4582435866
5152547273
3746433621
2465145365
6324887128
8537558745
4718427562
2283324746"""
input_test = """5483143223
2745854711
5264556173
6141336146
6357385478
4167524645
2176841721
6882881134
4846848554
5283751526"""
def flash(matrix, i, j):
if matrix[i][j] < 10:
return 0
res = 1
matrix[i][j] = -1
for x in range(i-1, i+2):
for y in range(j-1, j+2):
if x in range(len(matrix)) and y in range(len(matrix[x])) and (x != i or y != j):
if matrix[x][y] != -1:
matrix[x][y] += 1
res += flash(matrix, x, y)
return res
def first_star():
input_list = list(map(list, input.split('\n')))
input_num = [list(map(int, x)) for x in input_list]
res = 0
for x in range(100):
for i in range(len(input_num)):
for j in range(len(input_num[i])):
if input_num[i][j] != -1:
input_num[i][j] += 1
res += flash(input_num, i, j)
for i in range(len(input_num)):
for j in range(len(input_num[i])):
if input_num[i][j] == -1:
input_num[i][j] = 0
print(f"First star: {res}")
def check_all(matrix):
for i in range(len(matrix)):
for j in range(len(matrix[i])):
if matrix[i][j]:
return True
return False
def second_star():
input_list = list(map(list, input.split('\n')))
input_num = [list(map(int, x)) for x in input_list]
x = 0
while check_all(input_num):
for i in range(len(input_num)):
for j in range(len(input_num[i])):
if input_num[i][j] != -1:
input_num[i][j] += 1
flash(input_num, i, j)
for i in range(len(input_num)):
for j in range(len(input_num[i])):
if input_num[i][j] == -1:
input_num[i][j] = 0
x += 1
print(f"Second star: {x}")
if __name__ == '__main__':
first_star()
second_star()