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]
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)