From a957bda70ad30e6d400f14c71a074593b846884d Mon Sep 17 00:00:00 2001 From: DUEFON Date: Sun, 11 Dec 2022 22:16:14 +0100 Subject: [PATCH] 10 (requires easyocr) --- input10 | 138 ++++++++++++++++++++++++++++++++++++++++++++++++++++ ten.py | 33 +++++++++++++ test10 | 146 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 317 insertions(+) create mode 100644 input10 create mode 100755 ten.py create mode 100644 test10 diff --git a/input10 b/input10 new file mode 100644 index 0000000..09bac0f --- /dev/null +++ b/input10 @@ -0,0 +1,138 @@ +noop +addx 24 +addx -19 +noop +noop +noop +addx 5 +noop +addx 1 +addx 5 +addx -1 +addx 5 +addx 1 +addx 14 +addx -9 +addx -1 +addx 5 +noop +addx 2 +addx -20 +addx 24 +addx -36 +addx -2 +noop +addx 3 +addx 2 +addx 5 +addx 21 +addx -16 +noop +addx 2 +addx 15 +addx -14 +addx 2 +addx 5 +addx 2 +addx -4 +addx 5 +addx -8 +addx 15 +addx 2 +addx 3 +addx -2 +addx -38 +noop +addx 3 +addx 4 +noop +addx 7 +noop +noop +addx -2 +addx 5 +addx -16 +addx 21 +noop +addx -10 +addx 11 +addx 2 +addx 5 +addx 4 +noop +noop +addx -6 +addx 7 +noop +addx 3 +addx -36 +noop +addx 5 +noop +addx 20 +addx -19 +addx 5 +addx 4 +noop +addx -2 +addx 3 +noop +addx 4 +noop +addx -1 +addx 5 +addx 3 +addx -28 +addx 30 +noop +addx 6 +noop +noop +addx 1 +addx -38 +addx 40 +addx -33 +addx 20 +addx -19 +addx 2 +noop +addx 28 +addx -23 +addx 5 +addx 2 +addx 2 +addx 3 +addx -2 +addx 5 +addx 2 +addx -7 +addx 12 +addx -2 +noop +addx 3 +addx -38 +noop +addx 24 +addx -17 +noop +addx 5 +noop +noop +addx 1 +addx -8 +addx 13 +noop +noop +addx 2 +addx 5 +addx 2 +addx 6 +addx -5 +addx 4 +noop +addx 1 +addx 2 +noop +addx 3 +noop +noop diff --git a/ten.py b/ten.py new file mode 100755 index 0000000..76c1cb2 --- /dev/null +++ b/ten.py @@ -0,0 +1,33 @@ +#!/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) diff --git a/test10 b/test10 new file mode 100644 index 0000000..37ee8ee --- /dev/null +++ b/test10 @@ -0,0 +1,146 @@ +addx 15 +addx -11 +addx 6 +addx -3 +addx 5 +addx -1 +addx -8 +addx 13 +addx 4 +noop +addx -1 +addx 5 +addx -1 +addx 5 +addx -1 +addx 5 +addx -1 +addx 5 +addx -1 +addx -35 +addx 1 +addx 24 +addx -19 +addx 1 +addx 16 +addx -11 +noop +noop +addx 21 +addx -15 +noop +noop +addx -3 +addx 9 +addx 1 +addx -3 +addx 8 +addx 1 +addx 5 +noop +noop +noop +noop +noop +addx -36 +noop +addx 1 +addx 7 +noop +noop +noop +addx 2 +addx 6 +noop +noop +noop +noop +noop +addx 1 +noop +noop +addx 7 +addx 1 +noop +addx -13 +addx 13 +addx 7 +noop +addx 1 +addx -33 +noop +noop +noop +addx 2 +noop +noop +noop +addx 8 +noop +addx -1 +addx 2 +addx 1 +noop +addx 17 +addx -9 +addx 1 +addx 1 +addx -3 +addx 11 +noop +noop +addx 1 +noop +addx 1 +noop +noop +addx -13 +addx -19 +addx 1 +addx 3 +addx 26 +addx -30 +addx 12 +addx -1 +addx 3 +addx 1 +noop +noop +noop +addx -9 +addx 18 +addx 1 +addx 2 +noop +noop +addx 9 +noop +noop +noop +addx -1 +addx 2 +addx -37 +addx 1 +addx 3 +noop +addx 15 +addx -21 +addx 22 +addx -6 +addx 1 +noop +addx 2 +addx 1 +noop +addx -10 +noop +noop +addx 20 +addx 1 +addx 2 +addx 2 +addx -6 +addx -11 +noop +noop +noop