def main(): input_queue = Queue() output_queue = Queue() program = IntcodeProgram(io_scheme=IntcodeProgram.IOScheme.QUEUE, input_queue=input_queue, output_queue=output_queue) program.initialize_memory_from_file('input.txt') arcade_data = program.dump_memory() program.run_to_end() tiles = defaultdict(int) while True: try: x = program.get_output(block=False) y = program.get_output(block=False) tile = Tile(program.get_output(block=False)) tiles[tile] += 1 except Empty: break print(f'Block Count: {tiles[Tile.BLOCK]}') program.load_memory(arcade_data) program.set_memory_address(0, 2) tiles = {} while True: try: program.execute_next() except WaitingForInput: process_frame(program, tiles) # draw_screen(tiles) paddle = get_paddle_x(tiles) ball = get_ball_x(tiles) if paddle > ball: program.queue_input(-1) elif paddle < ball: program.queue_input(1) else: program.queue_input(0) except ProgramHalted: print('Program Complete') process_frame(program, tiles) break draw_screen(tiles) print(f'Final Score: {tiles[(-1, 0)]}')
def main(): input_queue = Queue() output_queue = Queue() program = IntcodeProgram(io_scheme=IntcodeProgram.IOScheme.QUEUE, input_queue=input_queue, output_queue=output_queue) program.initialize_memory_from_file('input.txt') memory_dump = program.dump_memory() survey_hull(program, memory_dump) survey_hull(program, memory_dump, run=True)
def main(): input_queue = Queue() output_queue = Queue() program = IntcodeProgram(io_scheme=IntcodeProgram.IOScheme.QUEUE, input_queue=input_queue, output_queue=output_queue) program.initialize_memory_from_file('input.txt') memory_dump = program.dump_memory() left_edge_coordinates, right_edge_coordinates = part_one( program, memory_dump) part_two(program, memory_dump, left_edge_coordinates, right_edge_coordinates)
def main(): input_queue = Queue() output_queue = Queue() program = IntcodeProgram(io_scheme=IntcodeProgram.IOScheme.QUEUE, input_queue=input_queue, output_queue=output_queue) program.initialize_memory_from_file('input.txt') memory_dump = program.dump_memory() program.run_to_end() scaffolding = build_scaffolding(program) alignment_parameters = [] for scaffold in scaffolding: if scaffolding.issuperset(scaffold.get_neighbors()): alignment_parameters.append(scaffold.x * scaffold.y) print(f'Part One: {sum(alignment_parameters)}') program.load_memory(memory_dump) program.set_memory_address(0, 2) drive_around(program)