diff --git a/py-ver/09.py b/py-ver/09.py new file mode 100644 index 0000000..7ac7be0 --- /dev/null +++ b/py-ver/09.py @@ -0,0 +1,129 @@ +import os +debug_draw = False + +with open("09.txt") as f: + data = f.read() +ex_data = """R 4 +U 4 +L 3 +D 1 +R 4 +D 1 +L 5 +R 2""" +ex2_data = """R 5 +U 8 +L 8 +D 3 +R 17 +D 10 +L 25 +U 20""" + +def is_adj(a, b): + return abs(a[0] - b[0]) <= 1 and abs(a[1] - b[1]) <= 1 + +dirs = {"NIL": (0, 0), "R": (1, 0), "U": (0, 1), "L": (-1, 0), "D": (0, -1), + "UR": (1, 1), "UL": (-1, 1), "DR": (1, -1), "DL": (-1, -1)} +dir_inv = dict() +for k, v in dirs.items(): + dir_inv[v] = k + +def move(dir, head, tail): + + dx, dy = dirs[dir] + hx, hy = head + tx, ty = tail + nhx, nhy = hx + dx, hy + dy + + if is_adj((nhx, nhy), (tx, ty)): ntx, nty = tx, ty + elif nhx != tx and nhy != ty: + # import pdb; pdb.set_trace() + # Move diagonally + ax, ay = nhx - tx, nhy - ty + if ax != 0 and ay != 0: + ax, ay = abs(ax) // ax, abs(ay) // ay + ntx, nty = tx + ax, ty + ay + elif nhx == tx: + if dir == "L" or dir == "R": ntx, nty = tx, ty + elif abs(nhy - ty) == 2: ntx, nty = tx, ty + dy + else: ntx, nty = tx, ty + elif nhy == ty: + if dir == "U" or dir == "D": ntx, nty = tx, ty + elif abs(nhx - tx) == 2: ntx, nty = tx + dx, ty + else: ntx, nty = tx, ty + else: ntx, nty = hx, hy + + return (nhx, nhy), (ntx, nty) + +def solve1(data): + head = (0, 0) + tail = (0, 0) + + all_pos = set() + all_pos.add(tail) + + for line in data.splitlines(): + line = line.strip() + dir, dist = line.split(" ") + dist = int(dist) + for _ in range(dist): + head, tail = move(dir, head, tail) + all_pos.add(tail) + + print(len(all_pos)) + +def move_multiple(dir, segs): + new_segs = [] + cur_dir = dir + for i in range(1, len(segs)): + head, tail = segs[i - 1], segs[i] + nhead, ntail = move(cur_dir, head, tail) + new_segs.append(nhead) + cur_dir = dir_inv[(ntail[0] - tail[0], ntail[1] - tail[1])] + new_segs.append(ntail) + return new_segs + +def solve2(data): + segs = [] + for _ in range(10): segs.append((0, 0)) + + all_pos = set() + all_pos.add((0, 0)) + + for line in data.splitlines(): + line = line.strip() + dir, dist = line.split(" ") + dist = int(dist) + for times in range(dist): + if debug_draw: os.system("clear") + segs = move_multiple(dir, segs) + all_pos.add(segs[-1]) + + if debug_draw: + print(dir, dist - times - 1) + segs_draw = dict() + for i, seg in enumerate(segs): + segs_draw[seg] = i + print(segs) + print(segs_draw) + for y in range(20, -20, -1): + for x in range(-20, 20): + n = segs_draw.get((x, y)) + if n is None: print(".", end="") + else: print(n, end="") + print() + input() + + print(len(all_pos)) + +head = (1, 1) +tail = (0, 0) +# print(move("UL", head, tail)) + +solve1(ex_data) +solve1(data) + +solve2(ex_data) +solve2(ex2_data) +solve2(data) diff --git a/py-ver/09.txt b/py-ver/09.txt new file mode 100644 index 0000000..b3b7f07 --- /dev/null +++ b/py-ver/09.txt @@ -0,0 +1,2000 @@ +D 2 +U 1 +D 1 +U 2 +D 2 +U 2 +R 2 +D 1 +L 1 +U 2 +D 1 +R 1 +U 1 +D 1 +U 1 +D 2 +L 1 +D 1 +U 1 +R 1 +D 1 +R 1 +L 2 +D 1 +R 2 +U 2 +L 1 +U 1 +R 1 +D 1 +U 2 +D 1 +U 1 +R 1 +L 1 +U 1 +R 1 +D 2 +U 2 +R 2 +L 1 +R 2 +L 2 +D 1 +L 2 +R 2 +D 2 +R 2 +D 1 +R 2 +D 1 +R 1 +U 2 +L 2 +D 1 +R 2 +U 2 +L 1 +U 1 +R 2 +D 2 +L 1 +U 2 +R 2 +U 1 +R 1 +D 2 +L 1 +R 2 +U 1 +D 2 +U 1 +R 1 +L 2 +D 1 +U 1 +L 1 +R 2 +L 2 +R 1 +D 2 +L 1 +R 2 +L 2 +R 2 +U 2 +L 2 +R 2 +L 2 +R 1 +L 2 +D 1 +L 2 +D 1 +R 2 +D 2 +U 2 +L 2 +R 2 +U 2 +D 1 +R 2 +L 1 +D 2 +U 1 +L 1 +D 2 +L 1 +U 2 +L 2 +U 1 +L 2 +U 2 +D 1 +R 2 +U 3 +R 3 +L 1 +R 2 +D 1 +R 1 +U 2 +L 2 +U 3 +L 1 +U 1 +R 3 +D 1 +U 1 +R 3 +U 2 +L 2 +D 1 +L 2 +D 2 +U 2 +D 2 +L 3 +U 3 +R 3 +D 1 +L 2 +D 3 +R 2 +L 1 +U 3 +D 2 +U 3 +L 1 +R 3 +U 1 +L 2 +R 1 +D 1 +U 2 +D 2 +R 2 +L 1 +U 3 +L 2 +U 1 +L 3 +U 1 +D 3 +R 3 +L 2 +D 3 +R 1 +L 1 +U 2 +D 3 +L 1 +U 3 +R 1 +D 1 +R 2 +U 1 +L 2 +U 1 +L 2 +D 1 +R 2 +L 3 +R 1 +L 3 +R 1 +D 1 +R 3 +U 1 +L 3 +R 2 +L 1 +U 3 +R 1 +U 3 +D 1 +R 1 +D 1 +R 1 +L 1 +U 3 +R 1 +L 1 +U 2 +D 2 +R 3 +L 1 +U 3 +D 1 +L 2 +U 3 +R 2 +L 1 +R 1 +L 3 +D 1 +U 3 +L 2 +U 2 +R 1 +U 3 +L 2 +U 3 +R 4 +D 1 +L 1 +U 1 +D 3 +R 1 +D 2 +R 2 +U 2 +R 2 +L 3 +D 3 +U 2 +L 2 +D 2 +R 1 +D 1 +U 4 +R 2 +L 2 +R 4 +D 2 +U 4 +L 4 +R 4 +L 1 +D 4 +R 3 +U 2 +D 3 +R 2 +L 2 +R 3 +U 2 +D 4 +L 2 +D 3 +R 4 +D 2 +L 4 +D 2 +L 1 +R 1 +L 3 +U 3 +D 2 +L 2 +R 4 +D 1 +U 3 +D 1 +U 3 +R 4 +L 1 +U 3 +L 1 +R 1 +D 1 +R 2 +D 1 +R 3 +D 1 +U 4 +L 2 +U 1 +D 3 +L 3 +D 2 +L 2 +D 3 +R 1 +D 3 +U 2 +D 3 +U 4 +D 2 +L 1 +R 4 +D 1 +L 1 +D 2 +L 1 +U 3 +L 1 +D 4 +L 3 +D 3 +U 4 +L 2 +R 3 +D 3 +R 2 +D 2 +R 2 +D 1 +L 1 +U 4 +D 1 +U 1 +L 1 +U 3 +R 1 +D 3 +L 3 +R 1 +L 3 +D 4 +R 3 +U 2 +L 2 +R 1 +D 5 +R 3 +L 1 +D 1 +R 1 +L 5 +D 4 +L 1 +R 1 +L 4 +D 3 +L 3 +R 2 +U 5 +L 3 +D 2 +U 4 +D 1 +U 4 +L 3 +U 5 +R 2 +U 3 +L 4 +R 1 +U 3 +L 3 +D 3 +R 4 +U 5 +L 2 +R 4 +L 5 +R 2 +D 1 +L 5 +D 5 +R 5 +D 3 +R 5 +D 3 +L 1 +U 3 +L 2 +D 3 +L 4 +D 5 +L 5 +D 5 +R 4 +L 1 +U 5 +L 3 +U 4 +L 4 +D 1 +L 4 +D 3 +R 4 +U 3 +R 3 +L 4 +U 2 +D 3 +U 4 +D 3 +R 1 +U 2 +D 3 +R 5 +L 2 +R 5 +U 3 +L 4 +R 1 +L 3 +U 1 +D 1 +L 3 +R 5 +U 5 +R 1 +U 4 +L 4 +U 3 +R 5 +L 3 +D 4 +L 1 +U 3 +L 3 +U 2 +D 2 +R 5 +L 5 +U 2 +L 2 +R 3 +U 4 +R 5 +L 5 +D 1 +R 3 +U 4 +L 5 +U 1 +R 4 +U 1 +D 5 +R 3 +D 1 +L 4 +U 5 +D 5 +R 1 +L 6 +D 6 +R 2 +U 4 +L 3 +R 5 +L 5 +R 4 +U 5 +D 3 +L 5 +U 2 +L 3 +D 3 +U 3 +D 6 +U 2 +R 5 +D 1 +U 2 +D 2 +U 2 +R 6 +D 4 +U 4 +R 4 +U 6 +R 3 +U 4 +D 4 +L 3 +U 3 +L 5 +U 3 +R 1 +U 5 +L 6 +U 1 +D 3 +U 5 +D 4 +L 5 +R 5 +U 3 +L 6 +R 2 +L 3 +D 4 +L 2 +U 3 +D 5 +U 4 +D 3 +R 2 +U 6 +D 5 +R 2 +U 6 +L 6 +R 2 +U 3 +L 6 +R 5 +D 4 +U 3 +R 5 +L 6 +R 4 +D 6 +L 3 +R 6 +U 6 +R 4 +U 4 +R 6 +U 2 +D 3 +R 1 +U 3 +D 3 +R 5 +D 3 +R 5 +U 4 +R 4 +L 4 +U 2 +R 1 +U 1 +L 2 +D 1 +R 6 +U 2 +D 2 +L 6 +R 1 +U 3 +L 3 +U 5 +D 4 +L 2 +D 1 +U 1 +D 5 +U 5 +L 5 +D 2 +L 5 +U 5 +D 2 +R 7 +U 7 +D 4 +R 4 +D 6 +U 2 +R 5 +L 2 +U 2 +R 2 +D 6 +U 7 +R 7 +D 7 +U 7 +D 2 +R 4 +D 7 +U 6 +D 1 +R 5 +D 7 +R 3 +L 2 +D 2 +U 2 +L 7 +U 2 +D 3 +U 2 +D 5 +L 4 +U 7 +R 7 +U 2 +L 6 +U 7 +R 5 +U 3 +D 1 +L 2 +U 1 +D 5 +U 7 +D 4 +L 6 +R 5 +L 2 +U 2 +R 6 +L 1 +U 7 +R 7 +U 3 +D 3 +L 2 +R 2 +U 6 +R 4 +D 4 +R 2 +L 6 +R 2 +D 3 +R 7 +D 2 +R 7 +L 4 +R 2 +U 4 +L 6 +U 5 +L 4 +U 7 +L 4 +R 2 +U 3 +L 1 +U 4 +R 5 +L 1 +D 2 +L 2 +U 7 +L 3 +R 3 +U 7 +R 2 +U 1 +L 2 +U 3 +R 7 +D 3 +U 2 +L 3 +U 7 +L 2 +U 5 +R 1 +U 4 +R 4 +D 6 +L 4 +R 7 +U 4 +L 7 +D 4 +L 7 +R 6 +D 4 +L 3 +R 3 +D 7 +L 5 +U 3 +D 4 +U 1 +L 8 +D 7 +L 1 +D 8 +L 3 +R 7 +D 8 +L 5 +D 1 +L 8 +R 7 +D 6 +R 8 +U 6 +R 3 +D 2 +U 7 +R 5 +D 3 +R 2 +L 7 +U 2 +D 6 +R 5 +U 4 +D 3 +R 2 +D 4 +U 5 +R 7 +U 4 +R 5 +L 4 +U 3 +L 1 +D 5 +L 7 +U 5 +D 7 +U 1 +D 4 +U 4 +D 2 +U 6 +L 5 +D 1 +R 4 +L 7 +R 3 +U 8 +L 3 +R 7 +U 1 +R 7 +L 7 +R 3 +D 4 +U 8 +R 1 +D 8 +L 7 +R 6 +U 5 +L 8 +R 6 +D 1 +L 4 +U 5 +L 4 +R 2 +U 7 +D 7 +R 2 +U 2 +D 3 +R 7 +D 8 +L 5 +U 2 +R 8 +D 1 +U 4 +D 6 +L 2 +U 6 +L 2 +R 5 +U 6 +L 8 +D 1 +R 1 +L 1 +D 3 +R 2 +L 2 +D 6 +R 6 +L 6 +U 5 +D 4 +L 4 +U 4 +R 7 +L 4 +U 4 +R 8 +U 5 +D 6 +U 6 +R 2 +U 3 +R 3 +U 6 +L 7 +R 5 +D 8 +U 1 +R 2 +D 4 +U 5 +D 3 +L 1 +U 3 +R 7 +D 8 +L 2 +D 2 +R 6 +U 7 +L 2 +R 4 +D 8 +R 2 +L 3 +U 1 +R 4 +D 3 +R 3 +L 2 +U 6 +D 1 +U 9 +D 8 +L 9 +R 7 +U 3 +L 9 +D 6 +U 2 +D 9 +R 7 +D 2 +L 9 +D 9 +L 2 +D 8 +R 7 +L 8 +U 8 +R 8 +D 7 +L 4 +R 8 +U 8 +R 9 +L 7 +D 7 +L 7 +D 9 +L 9 +D 4 +L 4 +U 4 +D 1 +L 5 +U 3 +R 2 +U 3 +D 3 +R 8 +U 2 +R 2 +D 2 +R 3 +U 1 +D 7 +R 4 +L 4 +U 7 +D 7 +R 1 +D 3 +R 2 +U 3 +D 3 +L 6 +D 1 +R 3 +D 5 +R 1 +U 1 +L 6 +D 1 +L 3 +R 6 +D 8 +U 4 +L 6 +U 3 +D 7 +U 7 +L 8 +U 8 +L 9 +U 6 +R 4 +U 6 +L 5 +R 8 +L 5 +U 9 +D 5 +U 2 +L 3 +U 3 +D 10 +R 9 +L 2 +U 5 +R 7 +U 4 +R 2 +L 3 +U 1 +L 2 +R 1 +D 8 +R 3 +U 1 +L 4 +D 6 +R 9 +D 6 +L 9 +U 9 +L 3 +R 5 +L 8 +U 8 +L 2 +R 7 +L 1 +U 7 +R 6 +U 5 +R 6 +L 5 +D 5 +U 4 +L 2 +D 7 +L 6 +U 4 +R 3 +L 1 +R 7 +U 3 +D 4 +U 5 +L 5 +D 10 +R 6 +U 9 +R 10 +D 7 +R 6 +D 10 +U 8 +D 3 +R 8 +L 6 +D 10 +U 1 +L 10 +U 7 +D 1 +U 2 +L 10 +U 7 +R 3 +D 10 +L 4 +R 6 +D 7 +R 5 +U 10 +L 6 +D 9 +R 8 +D 8 +R 1 +L 10 +D 9 +U 6 +R 6 +U 10 +R 3 +U 4 +R 7 +L 5 +U 4 +L 4 +U 6 +R 4 +U 7 +L 1 +R 2 +U 7 +L 1 +R 3 +D 3 +L 9 +U 10 +R 9 +L 3 +U 2 +R 7 +U 11 +R 4 +U 11 +D 4 +R 4 +L 1 +R 5 +U 6 +L 8 +U 4 +D 11 +U 6 +L 3 +R 8 +U 5 +D 2 +U 6 +D 3 +L 6 +U 7 +D 5 +U 7 +R 4 +L 8 +D 1 +L 5 +U 9 +D 2 +L 8 +U 1 +L 6 +R 8 +D 10 +R 7 +U 1 +R 11 +L 7 +R 3 +U 1 +L 1 +U 8 +D 3 +U 1 +D 8 +U 5 +D 10 +U 10 +R 3 +L 1 +D 10 +U 4 +D 11 +L 6 +R 8 +U 8 +L 9 +D 1 +R 8 +U 8 +D 1 +R 10 +L 10 +U 9 +R 6 +D 3 +U 11 +L 11 +R 2 +L 8 +R 6 +U 7 +R 5 +U 3 +D 3 +R 5 +U 2 +L 1 +U 3 +D 8 +U 6 +R 6 +D 3 +U 5 +R 8 +U 8 +D 7 +L 11 +R 2 +L 9 +R 8 +D 5 +L 4 +R 6 +D 1 +U 9 +D 7 +L 1 +D 5 +L 7 +U 11 +D 8 +U 9 +L 11 +D 3 +R 11 +L 6 +U 6 +D 3 +R 3 +L 8 +R 10 +L 9 +R 8 +U 3 +D 10 +U 10 +R 11 +U 10 +D 2 +U 8 +L 2 +D 2 +R 1 +U 2 +D 5 +L 1 +R 8 +U 3 +R 4 +D 6 +R 1 +U 4 +R 2 +L 1 +U 11 +D 8 +L 7 +R 9 +L 11 +R 1 +U 4 +R 11 +D 4 +L 1 +U 4 +D 5 +R 8 +U 8 +R 9 +U 10 +L 8 +R 9 +D 12 +L 6 +U 1 +R 6 +D 1 +U 6 +D 1 +R 11 +U 5 +R 1 +L 5 +U 6 +R 5 +L 5 +R 4 +D 4 +L 11 +R 12 +L 12 +U 12 +L 7 +D 10 +U 12 +D 4 +R 6 +U 9 +R 5 +U 4 +R 5 +L 11 +U 11 +R 3 +D 10 +R 4 +D 7 +R 4 +D 8 +R 6 +D 7 +L 3 +U 4 +L 3 +D 4 +U 6 +R 8 +U 9 +D 3 +R 8 +L 9 +R 2 +L 1 +D 6 +R 8 +L 5 +R 10 +U 5 +D 11 +U 1 +L 2 +U 7 +L 1 +D 3 +U 11 +D 10 +R 12 +D 9 +U 6 +L 13 +U 4 +L 13 +D 3 +R 9 +L 7 +U 8 +R 1 +L 13 +U 5 +R 4 +U 9 +R 6 +U 8 +L 2 +D 7 +R 8 +L 5 +R 9 +D 3 +R 3 +L 5 +U 12 +D 11 +L 7 +D 8 +L 4 +U 11 +R 10 +D 13 +U 2 +D 5 +U 5 +L 12 +D 7 +U 7 +R 7 +U 11 +R 4 +L 1 +U 7 +R 11 +D 11 +R 3 +U 8 +L 12 +D 2 +R 11 +L 1 +D 10 +U 9 +R 1 +U 1 +D 13 +L 3 +U 7 +L 7 +U 13 +D 3 +U 2 +L 10 +R 9 +L 4 +R 8 +L 10 +R 6 +L 9 +R 4 +D 12 +U 5 +D 8 +U 10 +D 7 +R 5 +D 4 +L 7 +D 5 +R 9 +U 1 +L 6 +D 1 +U 2 +D 2 +R 12 +U 10 +R 11 +L 5 +U 3 +D 2 +U 11 +D 9 +L 2 +R 4 +D 13 +L 2 +U 2 +R 6 +D 4 +U 10 +L 12 +U 11 +R 1 +D 10 +U 6 +R 7 +D 2 +U 5 +D 13 +U 7 +L 4 +D 3 +L 4 +U 4 +D 5 +L 13 +D 14 +U 13 +L 2 +R 3 +U 8 +R 9 +L 10 +R 3 +L 5 +U 8 +D 9 +R 8 +L 2 +U 2 +L 1 +D 1 +R 4 +U 11 +D 13 +R 2 +D 11 +R 4 +U 1 +R 14 +L 10 +U 13 +D 1 +R 10 +D 12 +R 7 +U 11 +R 8 +L 5 +R 4 +D 2 +U 10 +R 9 +L 3 +D 12 +R 10 +U 3 +L 3 +U 3 +D 5 +R 1 +D 1 +U 1 +D 8 +U 9 +R 2 +D 12 +U 13 +D 3 +U 11 +D 13 +L 1 +D 14 +R 9 +D 9 +L 12 +U 1 +D 7 +U 10 +R 4 +L 6 +U 5 +D 12 +U 1 +L 14 +R 6 +L 14 +D 12 +U 4 +R 9 +L 1 +R 11 +U 8 +L 1 +R 6 +U 2 +R 8 +D 9 +U 12 +R 2 +U 12 +R 12 +U 5 +D 13 +L 12 +R 11 +L 11 +R 13 +L 3 +R 10 +L 3 +R 10 +L 6 +D 2 +L 11 +R 4 +L 9 +U 8 +L 9 +D 14 +R 8 +D 5 +R 1 +D 5 +L 2 +D 2 +U 14 +R 6 +U 12 +R 10 +L 2 +U 8 +D 5 +U 1 +D 7 +L 1 +D 9 +R 6 +L 4 +R 6 +U 15 +L 4 +R 8 +U 2 +R 6 +D 10 +L 7 +D 11 +U 6 +D 2 +R 14 +L 11 +U 6 +D 2 +L 12 +U 14 +R 8 +D 11 +U 4 +D 8 +L 6 +D 5 +U 12 +D 1 +U 4 +L 1 +R 1 +U 14 +D 15 +L 11 +R 14 +L 13 +R 9 +D 11 +R 5 +L 13 +U 15 +L 5 +R 8 +D 15 +R 13 +U 3 +L 15 +D 9 +U 5 +D 13 +L 8 +R 11 +D 6 +L 12 +R 8 +L 10 +R 9 +D 12 +L 11 +U 12 +L 1 +U 1 +L 7 +R 6 +L 7 +D 13 +L 6 +R 3 +L 4 +U 2 +D 6 +L 2 +D 2 +R 3 +D 6 +U 7 +D 8 +R 4 +U 7 +D 4 +U 12 +D 10 +L 7 +U 12 +D 12 +U 7 +D 4 +L 9 +D 9 +R 11 +L 5 +U 13 +R 5 +U 6 +D 10 +L 9 +U 13 +D 1 +R 10 +L 12 +R 12 +L 16 +D 10 +U 3 +R 1 +L 7 +D 3 +R 16 +U 9 +L 6 +R 12 +U 10 +L 14 +R 12 +U 15 +L 14 +D 10 +U 15 +L 7 +U 8 +D 9 +R 8 +L 13 +U 6 +R 2 +U 3 +R 9 +D 9 +L 2 +D 10 +U 10 +D 15 +U 4 +R 10 +D 3 +L 10 +R 3 +D 11 +R 11 +U 1 +D 4 +R 15 +U 1 +R 4 +D 3 +L 6 +U 10 +L 9 +R 12 +U 8 +R 13 +L 15 +R 11 +D 12 +U 11 +D 3 +U 8 +R 3 +U 6 +L 7 +U 1 +R 8 +U 16 +L 8 +R 8 +U 1 +R 15 +U 5 +R 15 +U 8 +D 13 +R 5 +U 11 +R 11 +L 4 +R 2 +D 9 +R 3 +L 3 +R 10 +D 9 +L 7 +U 11 +D 9 +U 2 +R 15 +U 13 +D 3 +L 11 +D 9 +R 2 +U 8 +R 1 +L 5 +U 13 +D 12 +L 14 +D 14 +U 16 +D 6 +L 13 +U 12 +L 9 +U 15 +R 11 +U 5 +R 6 +D 6 +L 15 +D 1 +R 13 +D 2 +R 7 +U 6 +R 6 +L 4 +R 7 +U 15 +L 4 +R 5 +L 4 +U 16 +R 13 +L 8 +D 1 +R 14 +D 12 +R 3 +D 1 +R 5 +U 6 +R 4 +D 17 +U 8 +L 12 +R 12 +U 6 +R 14 +L 10 +U 15 +L 3 +U 2 +D 5 +R 4 +U 4 +D 10 +U 7 +L 7 +U 4 +R 1 +D 7 +U 1 +D 2 +L 15 +D 6 +L 13 +D 10 +U 1 +R 2 +L 15 +R 8 +D 4 +U 14 +L 13 +D 7 +R 16 +D 8 +U 9 +D 6 +R 14 +D 16 +U 13 +L 14 +D 5 +U 2 +D 14 +U 12 +L 13 +R 3 +L 13 +R 12 +D 8 +R 4 +L 5 +D 14 +L 8 +U 10 +R 15 +U 5 +D 2 +L 2 +U 1 +D 16 +L 14 +U 10 +R 13 +D 6 +L 13 +U 4 +R 12 +L 14 +U 14 +D 7 +R 12 +L 2 +R 11 +D 11 +R 6 +D 1 +R 14 +L 15 +R 12 +U 7 +D 4 +L 4 +D 7 +R 12 +L 5 +R 1 +L 11 +U 7 +L 1 +D 12 +L 11 +U 9 +L 6 +D 4 +R 15 +L 18 +R 14 +U 13 +R 14 +U 10 +R 11 +D 5 +U 4 +L 2 +D 8 +L 7 +U 14 +L 14 +R 4 +D 15 +U 2 +L 12 +R 10 +D 15 +L 7 +R 1 +U 17 +R 16 +U 4 +L 12 +D 2 +R 10 +U 17 +D 13 +L 5 +D 16 +R 14 +L 9 +D 3 +U 5 +D 8 +U 17 +L 6 +D 6 +L 4 +D 12 +R 10 +U 10 +D 10 +L 1 +R 7 +U 9 +D 7 +R 14 +L 4 +U 6 +L 17 +U 15 +D 13 +L 17 +R 2 +L 6 +D 10 +U 14 +R 9 +L 11 +U 12 +D 7 +R 15 +D 9 +U 13 +D 13 +U 9 +D 17 +U 8 +D 11 +L 12 +R 17 +U 17 +D 6 +L 17 +D 5 +L 5 +D 11 +R 9 +U 9 +D 15 +L 6 +R 4 +L 6 +U 10 +L 2 +U 15 +L 15 +R 6 +L 15 +U 13 +R 9 +D 12 +R 4 +U 11 +R 3 +L 10 +R 18 +L 5 +R 14 +L 3 +D 1 +U 12 +R 10 +L 16 +R 11 +U 6 +D 7 +U 6 +R 5 +D 19 +L 12 +R 16 +D 4 +L 15 +D 14 +L 17 +U 18 +D 13 +R 3 +D 9 +L 14 +U 16 +L 6 +U 14 +L 10 +D 2 +U 8 +L 1 +U 7 +D 12 +U 16 +L 15 +U 16 +R 15 +D 5 +R 7 +U 5 +R 13 +L 16 +D 7 +L 14 +R 9 +U 10 +L 16 +D 4 +U 17 +L 8 +D 3 +U 9 +D 2 +R 8 +D 3 +L 17 +D 1 +U 19 +R 16 +D 8 +U 18 +D 14 +U 1 +D 4 +U 12 +D 17 +R 19 +U 8 +D 7 +U 19 +R 15 +U 10 +R 6 +D 9 +L 6 +R 13 +D 16 +L 17 +R 18 +U 10 +R 19 +U 12 +D 19 +R 2 +L 8 +D 1 +L 17 +D 11 +R 7 +U 17 +L 4 +R 16 +U 17 +D 5 +L 8 +U 17 +L 16 +U 8 +L 19 +R 15 +U 5 +D 2 +R 18 +L 14 +D 9 +L 1 +D 5 +U 5 +D 8 +U 3 +R 9 +L 5 +R 6 +U 10 +R 3 +L 9