def is_tractor_beamed(coord):
  computer = IntcodeComputer(intcode[:], [])
  computer.inputs.append(coord[1])
  computer.inputs.append(coord[0])
  current_outputs = computer.outputs[:]
  while computer.outputs == current_outputs and not computer.halted:
    computer.perform_next_operation()
  return computer.outputs[-1]
예제 #2
0
intcode = [int(x) for x in open('input.txt', 'r').read().split(',')]

computer = IntcodeComputer(intcode[:], [])

current_outputs = []

open_spaces = set()
scaffolding = set()
robot_pos = ()
robot_direction = ''

output_pos = (0, 0)
max_x = 0
while not computer.halted:
    computer.perform_next_operation()
    if computer.outputs != current_outputs:
        latest_output_code = computer.outputs[-1]
        if latest_output_code == 10:
            output_pos = (0, output_pos[1] + 1)
        else:
            output_pos = (output_pos[0] + 1, output_pos[1])
            max_x = max(max_x, output_pos[0])
            if latest_output_code == 35:
                scaffolding.add(output_pos)
            elif latest_output_code == 46:
                open_spaces.add(output_pos)
            else:
                # It is the robot
                robot_pos = output_pos
                robot_direction = chr(latest_output_code)