You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
89 lines
2.7 KiB
89 lines
2.7 KiB
3 years ago
|
import sys
|
||
|
|
||
|
class octopie:
|
||
|
def __init__(self):
|
||
|
self.temp = []
|
||
|
|
||
|
def format(self):
|
||
|
self.y = []
|
||
|
temp2 = []
|
||
|
for i in self.temp:
|
||
|
temp2 = []
|
||
|
temp = list(i)
|
||
|
for t in temp:
|
||
|
t = int(t)
|
||
|
temp2.append(t)
|
||
|
self.y.append(temp2)
|
||
|
|
||
|
def tick(self):
|
||
|
for i in range(len(self.y)):
|
||
|
for t in range(len(self.y[i])):
|
||
|
self.y[i][t] += 1
|
||
|
|
||
|
def flash(self):
|
||
|
pas = True
|
||
|
counter = 0
|
||
|
while pas:
|
||
|
pas = False
|
||
|
for i in range(len(self.y)):
|
||
|
for t in range(len(self.y[i])):
|
||
|
if self.y[i][t] > 9:
|
||
|
self.y[i][t] = 0
|
||
|
pas = True
|
||
|
counter += 1
|
||
|
if t == 0:
|
||
|
pass
|
||
|
elif self.y[i][t - 1] != 0:
|
||
|
self.y[i][t - 1] += 1
|
||
|
if t == len(self.y[i]) - 1:
|
||
|
pass
|
||
|
elif self.y[i][t + 1] != 0:
|
||
|
self.y[i][t + 1] += 1
|
||
|
if i == 0:
|
||
|
pass
|
||
|
elif self.y[i - 1][t] != 0:
|
||
|
self.y[i - 1][t] += 1
|
||
|
if i == len(self.y) - 1:
|
||
|
pass
|
||
|
elif self.y[i + 1][t] != 0:
|
||
|
self.y[i + 1][t] += 1
|
||
|
if t == 0 or i == 0:
|
||
|
pass
|
||
|
elif self.y[i - 1][t - 1] != 0:
|
||
|
self.y[i - 1][t - 1] += 1
|
||
|
if t == len(self.y[i]) - 1 or i == 0:
|
||
|
pass
|
||
|
elif self.y[i - 1][t + 1] != 0:
|
||
|
self.y[i - 1][t + 1] += 1
|
||
|
if t == 0 or i == len(self.y) - 1:
|
||
|
pass
|
||
|
elif self.y[i + 1][t - 1] != 0:
|
||
|
self.y[i + 1][t - 1] += 1
|
||
|
if t == len(self.y[i]) - 1 or i == len(self.y) - 1:
|
||
|
pass
|
||
|
elif self.y[i + 1][t + 1] != 0:
|
||
|
self.y[i + 1][t + 1] += 1
|
||
|
return counter
|
||
|
|
||
|
|
||
|
|
||
|
octo = octopie()
|
||
|
solution = 0
|
||
|
passs = True
|
||
|
|
||
|
with open(sys.argv[1], 'r') as f:
|
||
|
for i in f.readlines():
|
||
|
i = i.strip()
|
||
|
octo.temp.append(i)
|
||
|
octo.format()
|
||
|
|
||
|
octocount = len(octo.y) * len(octo.y[0])
|
||
|
|
||
|
while passs:
|
||
|
octo.tick()
|
||
|
checker = octo.flash()
|
||
|
solution += 1
|
||
|
if checker == octocount:
|
||
|
passs = False
|
||
|
|
||
|
print(solution)
|