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()
def inside(x, y): pgm = Program(real) pgm.push(x) pgm.push(y) pgm.run() return pgm.pop()
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)