示例#1
0
program = day11_input

panel_map = dict()
robot_position = (0, 0)
robot_angle = 90

paint_robot = IntCodeProgram(program, [])
new_pos_counter = 0

while paint_robot.status != Status.HALTED:
    #scan current pos
    if robot_position not in panel_map.keys():  # first time at position
        panel_map[robot_position] = Color.BLACK.value
        new_pos_counter += 1

    paint_robot.set_input(panel_map[robot_position])
    paint_color = paint_robot.process()
    rotate_inst = paint_robot.process()

    #paint
    panel_map[robot_position] = paint_color

    #rotate robot
    if rotate_inst == 0:  # turn left
        robot_angle = (robot_angle + 90) % 360
    elif rotate_inst == 1:  # turn right
        robot_angle = (robot_angle - 90) % 360

    #move 1 position
    if robot_angle == 0:
        robot_position = (robot_position[0] + 1, robot_position[1])
示例#2
0
program = ex3

all_settings = permutations([0, 1, 2, 3, 4], 5)

output = 0

#loop all possible settings
for setting in all_settings:
    input = 0
    #loop instance of settings
    for s in setting:
        #amp = IntCodeProgram(program, [input, s])
        #input = amp.process()
        amp = IntCodeProgram(program, [s])
        input = amp.set_input(input).process()

    if input > output:
        output = input
        output_setting = setting

print(output)
print(output_setting)

################################################################################
# PART 2

ex4 = [
    3, 26, 1001, 26, -4, 26, 3, 27, 1002, 27, 2, 27, 1, 27, 26, 27, 4, 27,
    1001, 28, -1, 28, 1005, 28, 6, 99, 0, 0, 5
]