advent2022/ten.py

34 lines
797 B
Python
Executable File

#!/usr/bin/env python3
from useful import *
import easyocr
i = 1
s = {}
x = 1
for l in lines(open(0)):
s[i] = x
if l.split()[0] == 'addx':
i += 1
s[i] = x
x += int(l.split()[1])
i += 1
else:
i += 1
print(sum(i * (s[i] if i in s else s[i-1]) for i in range(20, 221, 40)))
w, h = 40, 6
paper = np.zeros((h, w))
for (y, x), _ in np.ndenumerate(paper):
if (s[y*w+x+1] - x)**2 < 2:
paper[y,x] = 1
if len(sys.argv) > 1 and sys.argv[1] == '-v':
print('\n'.join([
''.join(['#' if c else ' ' for c in l])
for l in paper]), file=sys.stderr)
eor = easyocr.Reader(('en',))
pray = eor.readtext(np.pad(paper, (42, 42)).astype('uint8') * 255)
text = re.sub(r'[^A-Z]', '', ''.join([s for (_, s, _) in pray]))
print(text)