def main(): prog_input = parse_program_input(sys.stdin.read().strip()) prog = Program(prog_input) prog.execute() view = prog.output_values view = ''.join(map(chr, view)).strip() print(view) viewlines = view.splitlines() alignment = sum(x*y for (x,y) in intersections(viewlines, SCAFFOLD_S)) print("Alignment:", alignment) grid = LineGrid(viewlines) print("Route:") print(','.join(t+str(s) for (t,s) in find_path(grid))) # I didn't find this programmatically, just from inspection patternA = 'L,12,L,12,R,12' patternB = 'L,8,L,8,R,12,L,8,L,8' patternC = 'L,10,R,8,R,12' route = 'A,A,B,C,C,A,B,C,A,B' feed = 'n\n' input_string = '\n'.join([route, patternA, patternB, patternC, feed]) prog_data = list(prog_input) prog_data[0] = 2 prog = Program(prog_data) prog.run_input(input_string) print(''.join(chr(v) if v < 256 else '\n%s'%v for v in prog.output_values))
def run_droid(prog_input, droid_input): prog = Program(prog_input) prog.run_input(droid_input) last = rindex(prog.output_values, ord('\n')) + 1 print(''.join(map(chr, prog.output_values[:last]))) print(prog.output_values[last:])