36 lines
1.0 KiB
Python
Executable File
36 lines
1.0 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
from useful import *
|
|
|
|
def is_mirror(pic, axis):
|
|
a = pic[:axis]
|
|
b = pic[i:i*2][::-1]
|
|
c = a == b
|
|
return c.all()
|
|
|
|
def is_smudged(pic, axis):
|
|
a = pic[:axis]
|
|
b = pic[i:i*2][::-1]
|
|
c = a != b
|
|
#ic(c)
|
|
#ic(c.sum())
|
|
#assert False
|
|
return c.sum() == 1
|
|
|
|
ms = [np.array([[c == '#' for c in l] for l in p.strip().split()]) for p in pgphs(open(0).read())]
|
|
score, score2 = 0, 0
|
|
for m in ms:
|
|
for tran, scoretran in ((lambda a: a, lambda n, h: n * 100),
|
|
(lambda a: a[::-1], lambda n, h: (h - n) * 100),
|
|
(lambda a: a.T, lambda n, h: n),
|
|
(lambda a: a.T[::-1], lambda n, h: h - n),):
|
|
height = tran(m).shape[0]
|
|
for i in range(1, height // 2 + 1):
|
|
if is_mirror(tran(m), i):
|
|
#ic(tran, i, draw(m))
|
|
score += scoretran(i, height)
|
|
if is_smudged(tran(m), i):
|
|
score2 += scoretran(i, height)
|
|
print(score)
|
|
print(score2)
|