Exemplo n.º 1
0
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]
Exemplo n.º 2
0
    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
Exemplo n.º 3
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)
Exemplo n.º 4
0
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)
Exemplo n.º 5
0
from intcode import Intcode

a = Intcode()
a.input_signal(2)
c = []

while a.status != "halted":
    c.append(a.output_signal())

print(c)
Exemplo n.º 6
0
def probe_location(x, y):
    drone = Intcode()
    drone.input_signal(x)
    drone.input_signal(y)
    return drone.output_signal()
Exemplo n.º 7
0
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