def get_painted_grid(instructions: List[int], initial_color: int): intcode = IntCode(instructions) directions = [(0, -1), (1, 0), (0, 1), (-1, 0)] position = (0, 0) point_colors: dict = {position: initial_color} result_direction = 0 direction_idx = 0 while result_direction is not None: intcode.with_input( point_colors[position] if position in point_colors else COLOR_BLACK ) result_color = intcode.run_instructions() result_direction = intcode.run_instructions() if result_direction is not None: point_colors[position] = result_color direction_idx = ( (direction_idx + 1) if result_direction == OUTPUT_TURN_RIGHT else (direction_idx - 1 + len(directions)) ) % len(directions) position = ( position[0] + directions[direction_idx][0], position[1] + directions[direction_idx][1], ) return point_colors
from intcode import IntCode INPUT_DEBUG = 1 INPUT_BOOST = 2 instructions = IntCode.read_instructions("input.txt") intcode = IntCode(instructions).with_input(INPUT_BOOST) result = 0 while result is not None: result = intcode.run_instructions() if result is not None: print(f"Output: {result}")