#!/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)