|
- import collections
- import sys
-
- from intcode import compute
-
-
- def get_panels(ns, start):
- feedback = [start]
- iter_in = iter(feedback)
- robot = compute(ns, iter_in)
-
- pos, ori = 0, -1j
- panels = collections.defaultdict(int)
- for paint, instruction in zip(robot, robot):
- panels[pos] = paint
- ori *= 1j if instruction else -1j
- pos += ori
- feedback.append(panels[pos])
- return panels
-
-
- def visualize(panels, brush):
- xmin, *_, xmax = sorted(int(p.real) for p in panels)
- ymin, *_, ymax = sorted(int(p.imag) for p in panels)
- for y in range(ymin, ymax + 1):
- for x in range(xmin, xmax + 1):
- print(brush[panels[complex(x, y)]], end='')
- print()
-
-
- text = sys.stdin.read()
- print(len(get_panels(text, 0)))
- visualize(get_panels(text, 1), brush=' #')
|