Exemplo n.º 1
0
def run( base, blacks, whites ):
    pgm = Program(real)
    loc = base
    facing = 0
    pgm.start()

    while pgm.is_alive():
        pgm.push( 1 if loc in whites else 0 )
        color = pgm.pop()
        newdir = pgm.pop()
        if TRACE:
            print( color, newdir )
        if color:
            whites.add( loc )
            blacks.discard( loc )
        else:
            blacks.add( loc )
            whites.discard( loc )
        facing = (facing+[1,3][newdir]) % 4
        loc += directions[facing]
        if TRACE:
            print( loc )
    pgm.join()
Exemplo n.º 2
0
def inside(x, y):
    pgm = Program(real)
    pgm.push(x)
    pgm.push(y)
    pgm.run()
    return pgm.pop()
Exemplo n.º 3
0
TESTS = 'test' in sys.argv

if TESTS:
    for p in test:
        print(p)
        for i in (1, 5, 12):
            print("Trying", i)
            pgm = Program(p)
            pgm.push(i)
            pgm.push(i)
            pgm.push(i)
            pgm.run()
            if pgm.output.empty():
                print("HALT empty")
            else:
                print(pgm.pop())

    pgm = Program(t2)
    pgm.push(1)
    pgm.run()
    print(pgm.pop())

# For part 1, enter 1.  For part 2, enter 5.

else:
    pgm = Program(real)
    pgm.push(1)
    pgm.run()
    print("Part 1", pgm.final)
    pgm = Program(real)
    pgm.push(5)