Add solution for day 11
This commit is contained in:
1 parent
0235f5bc1a
commit
80a3e451ac
5 files changed
+424
No files matched your search
Executable
+51
@@ -0,0 +1,51 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import sys
|
||||
|
||||
def flash(octop, x, y):
|
||||
for i in [(-1,-1), (-1,0), (-1,1), (0,-1), (0,1), (1,-1), (1,0), (1,1)]:
|
||||
if -1 < y+i[0] < len(octop) and -1 < x+i[1] < len(octop):
|
||||
if octop[y+i[0]][x+i[1]] > 0: octop[y+i[0]][x+i[1]] += 1
|
||||
octop[y][x] = 0
|
||||
return octop
|
||||
|
||||
def flashable(octo):
|
||||
for y in octo:
|
||||
for x in y:
|
||||
if x > 9:
|
||||
return True
|
||||
return False
|
||||
|
||||
def step(octo):
|
||||
nex = [[x+1 for x in y] for y in octo]
|
||||
flashs = 0
|
||||
while flashable(nex):
|
||||
for x in range(len(octo[0])):
|
||||
for y in range(len(octo)):
|
||||
if nex[y][x] > 9:
|
||||
nex = flash(nex,x,y)
|
||||
flashs += 1
|
||||
return nex, flashs
|
||||
|
||||
if __name__ == '__main__':
|
||||
lines = open(sys.argv[1]).read().strip('\n\n').split('\n') # or split \n\n or sth similar
|
||||
octos = [[int(i) for i in l] for l in lines]
|
||||
|
||||
# challenge 1
|
||||
flashes, i = 0, 0
|
||||
while True:
|
||||
i += 1
|
||||
octos, f = step(octos)
|
||||
if(i <= 100):
|
||||
flashes += f
|
||||
if sum([sum([1 for x in range(len(octos[0])) if octos[y][x] == 0]) for y in range(len(octos))]) == 100:
|
||||
first = i
|
||||
break
|
||||
|
||||
res1 = str(flashes)
|
||||
print("challenge 1:" +"\n" + res1 + "\n")
|
||||
|
||||
# challenge 2
|
||||
res2 = str(first)
|
||||
print("challenge 2:" +"\n" + res2 + "\n")
|
||||
|
||||
Reference in new issue
Block a user