def paint_hull(paint_bot: IntcodeComputer, ship_hull: Hull) -> Hull: current_location = (0, 0) heading = 0 while True: try: bot_input = ship_hull[current_location] except KeyError: bot_input = 0 paint_bot.set_inputs([bot_input]) code, color = paint_bot.execute() if code != IntcodeComputer.RETURNING_OUTPUT: break ship_hull[current_location] = color code, turn_direction = paint_bot.execute() if code != IntcodeComputer.RETURNING_OUTPUT: raise Exception("Should not be exiting here.") heading = (heading + ROTATIONS[turn_direction]) % len(DIRECTIONS) x, y, = current_location dx, dy = DIRECTIONS[heading] current_location = x + dx, y + dy return ship_hull
from intcode_computer import IntcodeComputer import copy with open("Day 9/input.txt", "r") as f: codes = [int(i) for i in f.readline().split(",")] comp = IntcodeComputer(optcodes=copy.deepcopy(codes), print_output=True) comp.set_inputs(2) comp.run()
from intcode_computer import IntcodeComputer import copy with open("Day 9/input.txt", "r") as f: codes = [int(i) for i in f.readline().split(",")] comp = IntcodeComputer(optcodes=copy.deepcopy(codes), print_output=True) comp.set_inputs(1) comp.run()
from itertools import permutations from intcode_computer import IntcodeComputer with open("Day 7/input.txt", "r") as f: codes = [int(i) for i in f.readline().split(",")] sequences = list(permutations(range(5))) max_val = 0 max_sequence = None for sequence in sequences: amp_a = IntcodeComputer(codes) amp_a.set_inputs(sequence[0], 0) amp_a.run() amp_b = IntcodeComputer(codes) amp_b.set_inputs(sequence[1], amp_a.outputs[0]) amp_b.run() amp_c = IntcodeComputer(codes) amp_c.set_inputs(sequence[2], amp_b.outputs[0]) amp_c.run() amp_d = IntcodeComputer(codes) amp_d.set_inputs(sequence[3], amp_c.outputs[0]) amp_d.run() amp_e = IntcodeComputer(codes) amp_e.set_inputs(sequence[4], amp_d.outputs[0]) amp_e.run()