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.
26 lines
674 B
26 lines
674 B
4 years ago
|
#!/usr/bin/env python3
|
||
|
|
||
|
from sys import argv
|
||
|
from itertools import product
|
||
|
|
||
|
i = {(x,y,0) for y,iy in enumerate(open(argv[1]).read().splitlines()) for x,ix in enumerate(iy) if ix == "#"}
|
||
|
i4 = {(x,y,z,0) for x,y,z in i}
|
||
|
|
||
|
def f(i,m):
|
||
|
ni = set()
|
||
|
da = [x for x in product(*([(-1,0,1)]*m)) if x != (0,)*m]
|
||
|
for p in product(*map(lambda x: range(min(x)-1,max(x)+2), zip(*i))):
|
||
|
n = [tuple(sum(x) for x in zip(p,d)) for d in da]
|
||
|
c = sum(1 for p in n if p in i)
|
||
|
if p in i and 2 <= c <= 3:
|
||
|
ni.add(p)
|
||
|
elif c == 3:
|
||
|
ni.add(p)
|
||
|
return ni
|
||
|
|
||
|
for c in range(6):
|
||
|
i = f(i,3)
|
||
|
i4 = f(i4,4)
|
||
|
print(len(i))
|
||
|
print(len(i4))
|