def part1(program): comp = IntComputer(program) out = comp.run_until_outputs() grid = defaultdict(lambda: 0) while len(out) == 3: x, y, tid = out grid[(x, y)] = tid out = comp.run_until_outputs() c = Counter(grid.values()) return c[2]
def part2(program): program = program[:] program[0] = 2 comp = IntComputer(program) grid = defaultdict(lambda: 0) ball, paddle = None, None score = 0 out = comp.run_until_outputs(0) while len(out) == 3: x, y, tid = out if x == -1: score = tid else: grid[(x, y)] = tid if tid == 4: ball = x if tid == 3: paddle = x # print(f'score={score}') # display_dict_as_grid(grid) v = get_input(ball, paddle) out = comp.run_until_outputs(v) return score