Ejemplo n.º 1
0
def run_computer(start_colour, get_program=get_input, display=False):
    stdout = []
    out = receive(stdout)

    panels = defaultdict(int)
    position = (0, 0)
    direction = Direction.NORTH
    panels[position] = start_colour

    computer = execute(get_program, out)
    try:
        while True:
            computer.send(panels[position])
            paint = stdout.pop(0)
            turn = stdout.pop(0)
            panels[position] = paint
            direction = turn_left(direction) if turn == 0 else turn_right(
                direction)
            position = move_forward(position, direction)
    except StopIteration:
        pass

    if display:
        to_grid(panels)

    return len(panels)
Ejemplo n.º 2
0
def test_computer_jump1():
    ram = [3,12,6,12,15,1,13,14,13,4,13,99,-1,0,1,9]
    input = 0
    stdout = []
    computer = Computer(ram, receive(stdout)).run()
    try:
        computer.send(input)
    except StopIteration:
        pass
    assert stdout == [0]
Ejemplo n.º 3
0
def test_computer_less_than_immediate():
    ram = [3,3,1107,-1,8,3,4,3,99]
    input = 8
    stdout = []
    computer = Computer(ram, receive(stdout)).run()
    try:
        computer.send(input)
    except StopIteration:
        pass
    assert stdout == [0]
Ejemplo n.º 4
0
def test_computer_less_than2():
    ram = [3,9,7,9,10,9,4,9,99,-1,8]
    input = 8
    stdout = []
    computer = Computer(ram, receive(stdout)).run()
    try:
        computer.send(input)
    except StopIteration:
        pass
    assert stdout == [0]
Ejemplo n.º 5
0
def test_computer_jump4():
    ram = [3,3,1105,-1,9,1101,0,0,12,4,12,99,1]
    input = 2
    stdout = []
    computer = Computer(ram, receive(stdout)).run()
    try:
        computer.send(input)
    except StopIteration:
        pass
    assert stdout == [1]
Ejemplo n.º 6
0
def test_computer_long1():
    ram = [3,21,1008,21,8,20,1005,20,22,107,8,21,20,1006,20,31,
           1106,0,36,98,0,0,1002,21,125,20,4,20,1105,1,46,104,
           999,1105,1,46,1101,1000,1,20,4,20,1105,1,46,98,99]
    input = 8
    stdout = []
    computer = Computer(ram, receive(stdout)).run()
    try:
        computer.send(input)
    except StopIteration:
        pass
    assert stdout == [1000]