from intcode import Intcode robot = Intcode() cr = (0, 0) fr = (0, 1) panels = {cr : 1} while robot.status != "halted": if cr not in panels: panels[cr] = 0 robot.input_signal(panels[cr]) panels[cr] = robot.output_signal() direction = robot.output_signal() if direction == 0: # left fr = (fr[1], -fr[0]) else: # right fr = (-fr[1], fr[0]) cr = (cr[0] + fr[0], cr[1] + fr[1]) m = [["0"] * 43 for i in range(6)] for panel in panels: m[-panel[1]][-panel[0]] = str(panels[panel]) for i in m: i[:] = [" " if j == "0" else j for j in i]
return True def get_side_dir(coords, direction, grid_map): direction_swap = (direction[1], -direction[0]) # L if in_map((coords[0] + direction_swap[0], coords[1] + direction_swap[1]), grid_map): yield (direction_swap, "L") direction_swap = (-direction[1], direction[0]) # R if in_map((coords[0] + direction_swap[0], coords[1] + direction_swap[1]), grid_map): yield (direction_swap, "R") ascii_interface = Intcode() camera_output = [] while ascii_interface.status == "awaiting output": camera_output.append(ascii_interface.output_signal()) camera_output = "".join([chr(i) for i in camera_output]).split() scaff = [[j for j in i] for i in camera_output] curr = None for y in enumerate(scaff): for x in enumerate(y[1]): if x[1] == "^": curr = (x[0], y[0]) break if curr: break direc = (-1, 0) seg_len = 0
b = Intcode() c = Intcode() d = Intcode() e = Intcode() a.input_signal(i[0]) b.input_signal(i[1]) c.input_signal(i[2]) d.input_signal(i[3]) e.input_signal(i[4]) outE = 0 while a.status != "halted": a.input_signal(outE) outA = a.output_signal() b.input_signal(outA) outB = b.output_signal() c.input_signal(outB) outC = c.output_signal() d.input_signal(outC) outD = d.output_signal() e.input_signal(outD) outE = e.output_signal() high = max(high, outE)
from intcode import Intcode game = Intcode() level = [[0] * 44 for _ in range(20)] score = 0 # 0 -> 43, 0 -> 19 # 3874 while game.status != "halted": if game.status == "awaiting output": x = game.output_signal() y = game.output_signal() t_id = game.output_signal() if x == -1 and y == 0: score = t_id else: level[y][x] = t_id elif game.status == "awaiting input": game.input_signal(0) print(score)
from intcode import Intcode a = Intcode() a.input_signal(2) c = [] while a.status != "halted": c.append(a.output_signal()) print(c)
def probe_location(x, y): drone = Intcode() drone.input_signal(x) drone.input_signal(y) return drone.output_signal()
robot = Intcode() cells = {(0, 0): 1, (0, 1): 0, (1, 0): 0, (0, -1): 0, (-1, 0): 0} oxygen = None unknown_cells = {(0, 1), (1, 0), (0, -1), (-1, 0)} robot_cell = (0, 0) while unknown_cells: unknown_cell = unknown_cells.pop() path = short_path(robot_cell, unknown_cell, cells) report = None for step in path: robot.input_signal(coord_to_dir(robot_cell, step)) report = robot.output_signal() if report: robot_cell = step cells[unknown_cell] = report if report: nbr_list = nbrs(robot_cell) for nbr in nbr_list: if nbr not in cells: cells[nbr] = 0 unknown_cells.add(nbr) if report == 2: oxygen = unknown_cell