advent2023/thirteen.py

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)