コード例 #1
0
def solvePartTwo(intCodeProg):
    done = False
    for noun in range(100):
        for verb in range(100):
            out = generateOutput(memory = intCodeToList(intCodeProg), 
                                  noun = noun, 
                                  verb = verb)
            if out == 19690720:
                done = True
                break
        if done:
            break
    return 100 * noun + verb
コード例 #2
0
def solve(intCodeProg):
    num_amps = 5
    program_mem = intCodeToList(intCodeProg)
    max_out = 0

    for phase_setting in itertools.permutations(range(num_amps)):
        next_amp_in = 0
        for x in range(num_amps):
            amplifier = CPU(program_mem)
            amplifier.set_input(phase_setting[x])
            amplifier.set_input(next_amp_in)
            amplifier.run()
            next_amp_in = amplifier.get_output()
        max_out = max(max_out, next_amp_in)
    return max_out
コード例 #3
0
def solvePartTwo(intCodeProg):
    num_amps = 5
    program_mem = intCodeToList(intCodeProg)
    max_out = -sys.maxsize - 1

    for phase_setting in itertools.permutations(range(5, 5 + num_amps)):
        amplifiers = list()
        next_amp_in = 0
        for x in range(num_amps):
            amplifiers.append(CPU(program_mem))
            amplifiers[x].set_input(phase_setting[x])

        while amplifiers[-1].run_mode:
            for amp in amplifiers:
                amp.set_input(next_amp_in)
                # reset pc when reading from input fails
                try:
                    amp.run()
                except IndexError:
                    amp.pc -= 2
                next_amp_in = amp.get_output()

        max_out = max(max_out, next_amp_in)
    return max_out
コード例 #4
0
def solve(intCodeProg):
    return generateOutput(memory = intCodeToList(intCodeProg), 
                          noun = 12, 
                          verb = 2)
コード例 #5
0
def solve(intCodeProg):
    processor = CPU(intCodeToList(intCodeProg))
    processor.set_input(1)
    processor.run()
    return processor.get_output()[-1]
コード例 #6
0
def solvePartTwo(intCodeProg):
    processor = CPU(intCodeToList(intCodeProg))
    processor.set_input(5)
    processor.run()
    return processor.get_output()
コード例 #7
0
def solvePartTwo(intCodeProg):
    hull_painter = Robot(intCodeToList(intCodeProg), 1)
    hull_painter.brain.run()
    return hull_painter.draw_screen()
コード例 #8
0
def solve(intCodeProg):
    hull_painter = Robot(intCodeToList(intCodeProg))
    hull_painter.brain.run()
    return len(hull_painter.ship_hull.keys())
コード例 #9
0
def solve_part_two(int_code_prog):
    game = Arcade('Arcanoid', (WINDOWWIDTH, WINDOWHEIGHT),
                  intCodeToList(int_code_prog))
    game.runGameLoop()

    return "See game output"
コード例 #10
0
def solve(int_code_prog):
    cart = Robot(intCodeToList(int_code_prog))
    cart.brain.run()
    return len([tile for tile in cart.grid.values() if tile == 2])