Tasks 01-14
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
from collections import defaultdict
|
||||
data = '''
|
||||
5483143223
|
||||
2745854711
|
||||
5264556173
|
||||
6141336146
|
||||
6357385478
|
||||
4167524645
|
||||
2176841721
|
||||
6882881134
|
||||
4846848554
|
||||
5283751526
|
||||
'''.strip().split('\n')
|
||||
with open("input") as f:
|
||||
data = f.read().strip().split('\n')
|
||||
data = [list(map(int, line)) for line in data]
|
||||
N = len(data)*len(data[0])
|
||||
d = defaultdict(lambda: -100000)
|
||||
d.update({(i,j): x for i, row in enumerate(data) for j, x in enumerate(row)})
|
||||
|
||||
directions = {(x,y) for x in [-1,0,1] for y in [-1,0,1]}-{(0,0)}
|
||||
|
||||
s = 0
|
||||
for _ in range(100):
|
||||
for c, x in d.items():
|
||||
d[c] = x+1
|
||||
ready = set()
|
||||
flashed = {c for c, x in d.items() if x>9 and c not in ready}
|
||||
while flashed:
|
||||
s += len(flashed)
|
||||
ready = ready | flashed
|
||||
for i, j in flashed:
|
||||
for di, dj in directions:
|
||||
d[(i+di, j+dj)] += 1
|
||||
flashed = {c for c, x in d.items() if x>9 and c not in ready}
|
||||
for c in ready:
|
||||
d[c] = 0
|
||||
|
||||
print(s)
|
||||
|
||||
step = 0
|
||||
ready = set()
|
||||
flashed = {c for c, x in d.items() if x>9 and c not in ready}
|
||||
while flashed:
|
||||
ready = ready | flashed
|
||||
for i, j in flashed:
|
||||
for di, dj in directions:
|
||||
d[(i+di, j+dj)] += 1
|
||||
flashed = {c for c, x in d.items() if x>9 and c not in ready}
|
||||
while len(ready)!=N:
|
||||
for c in ready:
|
||||
d[c] = 0
|
||||
step += 1
|
||||
for c, x in d.items():
|
||||
d[c] = x+1
|
||||
ready = set()
|
||||
flashed = {c for c, x in d.items() if x>9 and c not in ready}
|
||||
while flashed:
|
||||
ready = ready | flashed
|
||||
for i, j in flashed:
|
||||
for di, dj in directions:
|
||||
d[(i+di, j+dj)] += 1
|
||||
flashed = {c for c, x in d.items() if x>9 and c not in ready}
|
||||
print(step+100)
|
||||
Reference in New Issue
Block a user