advent-of-code-2019/day19.py

37 lines
772 B
Python

#!/usr/bin/env python3
from intcode import preproc
def partI(exe):
mp = '\n'.join(''.join(str(next(exe(x, y))) for x in range(50))
for y in range(50))
return mp.count('1')
def partII(exe):
def is_beam(x, y):
return next(exe(x, y)) == 1
xs = [(0, 0)]
y = 100
width = 0
while len(xs) < 100 or xs[0][1] - xs[-1][0] < 99:
x = xs[-1][0]
while not is_beam(x, y):
x += 1
start = x
x += width
while is_beam(x, y):
width += 1
x += 1
width -= 1
end = x-1
xs.append((start, end))
if len(xs) > 100:
xs = xs[-100:]
y += 1
X = start
Y = y - 100
return 10**4 * X + Y