Esempio n. 1
0
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)
Esempio n. 2
0
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