示例#1
0
文件: 11.py 项目: vidstige/aoc
def robot():
    vm = Intcode(load(11))
    grid = dict()
    di = 0
    p = (0, 0)

    grid[p] = 1
    while not vm.is_terminated():
        camera = grid.get(p, 0)
        vm.write(camera)
        color = vm.run()
        turn_right = vm.run()
        if color is not None:
            grid[p] = color
        di = (di + (1 if turn_right == 1 else -1)) % len(DIRECTIONS)
        dx, dy = DIRECTIONS[di]
        x, y = p
        p = x + dx, y + dy

    print(len(grid))
    render(grid)
示例#2
0
文件: 21.py 项目: vidstige/aoc
# Jump if any space (unless !A AND B AND !C) and double landing spaces ok
# !(A AND AND B C OR) AND D AND (H OR E)

#ABCDEFGHI
#.#.##.#.####

program = """
NOT T T
AND A T
AND B T
AND C T
NOT T J
AND D J
NOT A T
AND A T
OR H T
OR E T
AND T J
RUN
"""

vm.write_ascii(program.lstrip())
while not vm.is_terminated():
    c = vm.run()
    if c is not None:
        if c > 255:
            print(c)
            break
        print(str(chr(c)), end='')