def part1(): """Solve challenge part 1.""" thrusters_signals = set() intcode_vm = IntCodeVM(INPUT) for perm in permutations(range(5)): signals = [0] for amp_id in range(5): intcode_vm.reset() intcode_vm.add_input(perm[amp_id], signals[-1]) signals.append(intcode_vm.run()) thrusters_signals.add(signals[-1]) return max(thrusters_signals)
def part2(): """Solve challenge part 2.""" intcode_vm = IntCodeVM(INPUT, 0) intcode_vm.mem_set(0, 2) screen = dict() score = 0 while not intcode_vm.is_halted: # print_screen(screen) joystick = get_joystick_move(screen) intcode_vm.add_input(joystick, clear_inputs=True) point, tile_id = get_software_output(intcode_vm) if point == DISPLAY_SCORE: score = tile_id elif point.x is not None: screen[point] = tile_id return score