From 2b99e3c8640c1b5d3cf00ce7df3ff2b6fabf5026 Mon Sep 17 00:00:00 2001 From: Luke Hubmayer-Werner Date: Fri, 9 Dec 2022 16:39:00 +1030 Subject: [PATCH] 2022 Day 9 Python --- 2022/day09.py | 47 ++ 2022/input/09 | 2000 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 2047 insertions(+) create mode 100644 2022/day09.py create mode 100644 2022/input/09 diff --git a/2022/day09.py b/2022/day09.py new file mode 100644 index 0000000..568e4ae --- /dev/null +++ b/2022/day09.py @@ -0,0 +1,47 @@ +import numpy as np +with open('input/09', 'r') as file: + lines = file.read().strip().split('\n') +dtype = np.int32 + +directions_array = np.array([[1,0], [-1,0], [0,1], [0,-1]], dtype=dtype) +directions_dict = {'R': directions_array[0], 'L': directions_array[1], 'D': directions_array[2], 'U': directions_array[3]} # Positive down for visualization + +def move_tail(rope: np.array): + for i in range(1, rope.shape[0]): + dx, dy = rope[i-1,:] - rope[i,:] + if abs(dx) > 1 and dy == 0: + rope[i,0] += 1 if dx > 0 else -1 + elif abs(dy) > 1 and dx == 0: + rope[i,1] += 1 if dy > 0 else -1 + elif abs(dx) + abs(dy) > 2: + rope[i,0] += 1 if dx > 0 else -1 + rope[i,1] += 1 if dy > 0 else -1 + +def simulate_rope_drag(length: int, lines: list[str]): + rope = np.zeros([length,2], dtype=dtype) + visited = {(rope[-1,0], rope[-1,1])} + for line in lines: + dir_vector = directions_dict[line[0]] + amount = int(line[2:]) + for i in range(amount): + rope[0,:] += dir_vector + move_tail(rope) + visited.add((rope[-1,0], rope[-1,1])) + return visited + +def visualise_cells(visited: set, size=20): + vis_lol = [['#' if (x,y) in visited else '.' for x in range(-size, size)] for y in range(-size, size)] + vis_str = '\n'.join(''.join(line) for line in vis_lol) + print(vis_str) + + +visited_part_1 = simulate_rope_drag(2, lines) +print(f'Part 1: String length of 2 - tail visits {len(visited_part_1)} cells') +visited_part_2 = simulate_rope_drag(10, lines) +print(f'Part 2: String length of 10 - tail visits {len(visited_part_2)} cells') + +if input('Visualise part 1 cells? [y/N]: ').lower() == 'y': + visualise_cells(visited_part_1, 70) + print() +if input('Visualise part 2 cells? [y/N]: ').lower() == 'y': + visualise_cells(visited_part_2, 70) diff --git a/2022/input/09 b/2022/input/09 new file mode 100644 index 0000000..b87df75 --- /dev/null +++ b/2022/input/09 @@ -0,0 +1,2000 @@ +U 1 +D 2 +U 1 +L 1 +R 1 +L 1 +D 1 +L 2 +U 2 +L 2 +D 2 +L 2 +D 2 +L 1 +R 1 +D 1 +U 1 +D 1 +R 1 +U 2 +D 2 +R 2 +L 2 +R 2 +D 2 +L 2 +D 2 +R 1 +L 2 +D 2 +R 2 +D 1 +R 1 +L 1 +D 1 +U 1 +L 2 +D 2 +R 1 +L 2 +R 1 +U 1 +R 1 +L 1 +R 2 +D 1 +U 1 +D 1 +R 1 +U 2 +R 2 +D 1 +R 2 +D 1 +U 1 +D 1 +R 2 +U 2 +D 1 +U 2 +D 1 +L 1 +D 1 +U 2 +R 1 +L 1 +R 1 +D 2 +U 1 +D 2 +L 1 +R 2 +U 2 +R 1 +D 1 +R 1 +U 1 +R 1 +U 2 +R 2 +L 1 +U 1 +D 2 +U 1 +D 2 +L 2 +D 1 +U 2 +L 1 +U 1 +D 1 +U 1 +L 1 +D 2 +L 2 +R 1 +D 1 +L 2 +D 2 +R 2 +L 1 +D 1 +L 2 +U 2 +L 1 +R 2 +U 1 +D 1 +L 1 +U 2 +L 1 +D 1 +U 3 +D 3 +L 3 +U 2 +R 1 +U 2 +R 1 +U 2 +L 2 +U 3 +R 2 +L 1 +U 1 +D 3 +R 3 +U 1 +D 3 +L 2 +R 1 +L 1 +U 3 +R 3 +D 3 +U 2 +L 3 +D 3 +U 1 +L 1 +U 2 +D 1 +L 3 +D 3 +R 3 +U 1 +L 2 +R 1 +L 3 +U 2 +D 2 +R 3 +D 3 +L 1 +R 2 +D 1 +L 3 +U 1 +D 3 +U 3 +D 1 +U 1 +R 1 +U 2 +L 1 +D 3 +R 3 +D 1 +U 2 +D 2 +L 3 +D 3 +U 1 +D 2 +R 2 +L 1 +D 3 +L 1 +U 2 +L 2 +D 1 +L 3 +R 1 +L 1 +R 3 +U 1 +L 3 +R 2 +L 1 +D 1 +R 3 +D 1 +R 1 +D 1 +L 3 +D 1 +U 2 +R 3 +D 1 +U 1 +R 2 +U 1 +R 3 +L 3 +U 3 +D 2 +R 3 +L 1 +D 2 +R 2 +L 2 +U 1 +L 3 +R 2 +L 2 +U 3 +L 1 +D 1 +U 2 +R 1 +U 3 +R 2 +D 3 +L 3 +U 4 +D 4 +R 3 +L 3 +R 3 +U 2 +R 3 +L 4 +R 2 +U 1 +R 3 +U 3 +R 4 +U 2 +D 3 +L 3 +D 4 +U 3 +D 4 +U 3 +D 2 +R 2 +D 1 +R 4 +U 2 +D 4 +L 3 +D 4 +U 1 +L 2 +R 1 +L 3 +R 1 +L 3 +U 3 +D 3 +U 4 +L 2 +D 4 +L 4 +U 4 +L 3 +D 1 +R 2 +U 4 +R 2 +L 1 +R 3 +D 2 +L 3 +U 2 +R 1 +U 1 +D 3 +L 4 +D 3 +L 3 +D 3 +U 4 +D 3 +R 4 +L 1 +U 2 +R 4 +D 2 +U 3 +L 4 +R 2 +L 1 +D 4 +U 3 +R 2 +L 2 +R 4 +L 4 +D 1 +L 3 +D 4 +L 3 +U 2 +R 2 +D 4 +R 2 +U 2 +D 1 +U 4 +D 2 +R 4 +D 1 +U 1 +D 1 +R 1 +L 1 +R 2 +U 4 +R 4 +D 3 +R 4 +L 1 +D 2 +U 1 +L 3 +U 4 +R 3 +D 4 +L 1 +D 1 +L 4 +D 3 +R 1 +D 4 +L 3 +R 2 +D 3 +L 2 +D 4 +U 2 +L 2 +D 4 +L 2 +U 5 +R 3 +D 2 +U 5 +R 3 +L 3 +R 1 +D 4 +R 1 +D 3 +U 3 +R 2 +D 5 +U 4 +L 1 +D 1 +R 5 +D 5 +U 1 +L 3 +D 2 +L 4 +U 3 +L 2 +U 1 +R 1 +U 2 +D 5 +L 1 +R 4 +L 1 +U 3 +L 5 +U 2 +L 1 +R 1 +L 1 +R 1 +U 5 +D 5 +R 2 +D 4 +L 1 +R 4 +L 3 +U 5 +L 4 +U 3 +R 5 +D 1 +L 3 +R 1 +U 5 +R 2 +L 4 +U 1 +L 2 +U 5 +L 3 +U 1 +R 3 +D 4 +U 1 +R 5 +L 5 +R 1 +D 1 +R 5 +U 1 +R 2 +L 5 +R 2 +L 2 +R 1 +U 5 +D 2 +L 2 +R 4 +L 3 +U 5 +R 2 +L 3 +R 2 +D 1 +R 5 +L 4 +D 2 +U 1 +R 4 +D 3 +R 4 +D 2 +R 2 +D 5 +L 3 +D 1 +U 2 +L 1 +U 5 +D 4 +U 2 +R 5 +U 3 +D 4 +R 2 +U 2 +R 4 +D 6 +L 6 +D 1 +U 2 +D 4 +R 3 +D 6 +R 4 +L 6 +R 4 +D 2 +U 4 +D 3 +U 2 +L 4 +R 6 +U 5 +R 3 +U 1 +L 3 +D 2 +R 5 +D 4 +U 6 +D 4 +R 2 +U 6 +D 6 +U 5 +R 1 +U 4 +R 5 +L 6 +U 2 +D 2 +R 5 +U 3 +L 3 +U 2 +D 4 +L 5 +R 2 +D 5 +L 3 +U 4 +D 3 +U 5 +L 2 +U 3 +L 2 +U 3 +L 3 +U 1 +L 2 +U 1 +L 6 +D 1 +R 4 +D 4 +L 4 +U 4 +D 4 +R 2 +D 1 +U 1 +R 4 +D 2 +R 4 +L 6 +R 5 +U 2 +R 2 +U 1 +R 6 +L 1 +U 6 +R 5 +D 4 +L 2 +U 4 +R 3 +D 5 +L 5 +D 2 +R 6 +U 5 +R 3 +D 1 +L 2 +D 1 +R 4 +L 5 +U 6 +R 4 +D 3 +U 3 +R 1 +D 3 +U 2 +L 1 +U 1 +R 5 +L 4 +D 1 +R 2 +U 1 +L 3 +R 5 +D 5 +U 5 +L 1 +U 2 +R 7 +D 5 +L 7 +D 2 +R 7 +L 2 +D 6 +U 1 +L 5 +U 5 +D 2 +R 4 +U 3 +L 7 +R 5 +L 3 +D 6 +U 2 +D 5 +L 3 +R 4 +U 6 +D 5 +L 5 +U 2 +D 5 +R 4 +U 2 +L 2 +D 5 +U 2 +R 5 +L 4 +R 5 +U 6 +D 3 +U 7 +L 6 +D 4 +U 2 +R 7 +L 5 +D 5 +R 6 +L 1 +D 2 +L 2 +R 2 +U 3 +R 7 +D 1 +U 3 +R 2 +U 3 +R 5 +U 3 +L 7 +D 6 +L 7 +D 5 +L 5 +R 5 +U 2 +L 4 +U 7 +L 2 +D 7 +U 5 +L 4 +R 4 +L 2 +U 5 +L 4 +D 5 +R 7 +U 2 +L 1 +D 6 +R 1 +U 6 +D 1 +L 7 +U 3 +D 2 +L 3 +U 4 +R 4 +L 5 +U 7 +L 1 +D 5 +L 7 +D 1 +R 6 +L 1 +R 5 +L 3 +U 5 +D 2 +U 6 +D 4 +U 1 +R 2 +D 8 +R 8 +D 1 +R 4 +D 6 +L 8 +R 5 +D 5 +R 6 +D 5 +U 1 +L 1 +D 2 +L 4 +R 1 +D 1 +R 7 +L 8 +U 1 +D 8 +U 6 +L 7 +R 4 +U 1 +L 2 +U 1 +L 7 +D 2 +R 8 +L 1 +U 8 +R 8 +D 6 +U 2 +L 8 +D 7 +U 4 +R 8 +L 7 +U 6 +D 6 +U 2 +L 4 +D 3 +L 2 +D 3 +R 7 +U 3 +L 3 +U 3 +D 8 +L 2 +D 3 +L 1 +R 2 +U 8 +L 4 +D 7 +L 8 +R 3 +L 7 +U 2 +R 8 +D 3 +R 7 +U 3 +L 8 +U 5 +D 5 +U 5 +D 8 +U 8 +D 2 +L 4 +U 3 +D 2 +R 6 +U 3 +R 2 +U 4 +R 2 +L 6 +U 7 +R 6 +L 5 +D 6 +L 8 +U 5 +R 3 +L 5 +U 7 +D 7 +L 1 +U 6 +R 7 +D 3 +R 2 +L 7 +R 6 +D 7 +U 4 +D 2 +L 2 +U 3 +R 1 +U 5 +R 6 +D 2 +R 8 +U 7 +L 7 +U 8 +L 4 +R 9 +U 7 +D 6 +L 6 +R 4 +D 9 +L 1 +D 5 +U 2 +L 3 +R 9 +D 2 +U 1 +R 4 +L 8 +R 1 +L 1 +U 4 +R 4 +U 4 +R 3 +D 2 +U 5 +R 8 +D 1 +U 5 +L 4 +D 5 +U 3 +L 1 +D 4 +L 3 +U 8 +R 3 +L 3 +R 9 +U 3 +D 1 +R 4 +U 2 +L 8 +R 7 +L 4 +R 4 +L 7 +U 6 +L 2 +U 9 +R 7 +D 6 +U 5 +L 9 +U 7 +L 5 +D 1 +U 8 +R 4 +D 1 +L 8 +D 8 +L 7 +R 1 +L 7 +R 3 +U 2 +R 5 +D 1 +U 9 +R 1 +L 5 +U 5 +R 6 +L 4 +D 3 +R 9 +D 7 +R 3 +D 2 +R 6 +U 2 +D 5 +L 7 +U 1 +D 8 +R 2 +D 3 +R 3 +L 6 +R 2 +L 7 +D 8 +R 6 +D 6 +R 9 +U 6 +R 9 +D 3 +R 8 +U 7 +L 5 +D 2 +R 5 +U 6 +R 7 +D 7 +U 6 +L 2 +U 6 +R 4 +D 2 +L 9 +U 2 +L 9 +U 9 +R 8 +D 1 +U 9 +R 7 +U 5 +L 3 +D 5 +U 9 +L 2 +R 1 +U 3 +D 4 +L 1 +R 10 +D 9 +U 3 +R 6 +L 1 +D 5 +U 1 +D 10 +U 6 +L 3 +U 7 +D 10 +L 2 +U 10 +D 5 +R 1 +L 1 +R 3 +L 7 +D 4 +L 7 +D 10 +R 8 +L 7 +U 2 +R 6 +U 3 +L 6 +D 4 +R 8 +D 3 +R 8 +D 10 +L 3 +D 5 +L 5 +R 10 +U 6 +L 10 +R 1 +L 7 +D 3 +U 2 +D 6 +R 3 +D 6 +L 4 +R 10 +U 8 +D 4 +L 8 +U 7 +D 3 +L 3 +D 2 +R 8 +U 9 +L 1 +U 8 +D 8 +R 4 +U 9 +D 3 +R 10 +U 3 +L 4 +R 5 +U 3 +R 7 +D 9 +R 4 +U 9 +D 5 +R 8 +L 9 +U 1 +L 8 +R 4 +D 1 +L 4 +D 6 +U 5 +L 4 +R 9 +U 2 +D 7 +R 1 +L 1 +R 7 +D 6 +L 10 +R 10 +D 4 +R 11 +L 8 +U 9 +L 6 +R 4 +U 3 +L 1 +D 7 +L 8 +D 6 +L 3 +R 5 +U 1 +D 9 +U 3 +D 4 +U 11 +D 2 +U 1 +L 4 +R 11 +L 9 +R 6 +U 6 +L 4 +U 11 +L 4 +R 5 +L 10 +R 6 +U 8 +R 8 +L 4 +D 11 +L 11 +R 2 +U 9 +R 6 +D 8 +U 6 +L 1 +R 11 +L 1 +R 1 +D 7 +L 2 +U 11 +D 7 +L 9 +R 7 +U 2 +R 5 +D 10 +R 4 +D 4 +U 2 +R 7 +U 9 +L 10 +U 11 +L 3 +R 10 +D 9 +L 6 +U 10 +L 7 +R 11 +U 5 +D 11 +R 8 +D 1 +U 7 +R 2 +U 8 +D 4 +R 6 +D 4 +U 6 +R 6 +L 7 +U 5 +R 4 +U 5 +R 3 +L 2 +R 5 +D 8 +L 11 +U 2 +R 8 +L 4 +U 11 +R 2 +D 8 +L 3 +D 2 +R 10 +L 2 +R 2 +L 8 +D 8 +L 8 +R 1 +L 1 +U 9 +D 7 +U 6 +R 2 +L 9 +U 11 +D 3 +R 10 +U 5 +R 5 +L 4 +R 10 +L 6 +U 10 +R 2 +U 2 +L 7 +R 10 +L 2 +U 3 +L 9 +U 6 +L 12 +R 8 +U 3 +R 10 +U 12 +L 6 +U 11 +R 2 +D 5 +R 12 +D 10 +R 9 +L 5 +R 9 +L 6 +R 3 +U 4 +R 6 +U 8 +L 3 +U 10 +R 5 +L 3 +U 6 +R 4 +U 10 +R 8 +D 8 +R 3 +L 5 +U 4 +D 9 +U 12 +D 10 +L 10 +R 3 +D 4 +R 2 +D 6 +L 2 +R 3 +L 10 +U 3 +D 6 +L 8 +R 9 +D 4 +L 3 +U 10 +L 11 +R 5 +U 11 +R 11 +D 11 +L 6 +R 5 +D 6 +R 4 +U 9 +R 11 +D 2 +U 9 +L 1 +R 12 +D 8 +R 11 +D 4 +R 3 +U 10 +D 5 +U 9 +R 10 +L 4 +R 9 +L 10 +D 7 +R 8 +L 8 +R 11 +L 3 +U 4 +D 10 +R 2 +L 2 +U 1 +L 12 +U 9 +R 2 +D 7 +R 2 +L 6 +D 8 +L 3 +U 7 +R 6 +D 6 +L 6 +R 5 +L 12 +D 13 +U 9 +L 1 +R 11 +D 4 +U 10 +D 7 +L 8 +U 13 +L 12 +R 3 +L 2 +D 1 +U 4 +D 9 +R 9 +L 12 +D 13 +U 9 +R 8 +L 3 +U 2 +L 1 +U 12 +D 12 +U 5 +L 5 +U 10 +R 3 +D 8 +R 10 +L 9 +R 1 +U 4 +D 12 +R 11 +U 8 +L 9 +U 10 +R 8 +U 13 +D 13 +U 10 +D 5 +R 6 +U 11 +R 4 +U 6 +L 2 +U 13 +L 2 +U 8 +R 13 +U 4 +D 5 +U 3 +R 8 +U 8 +L 6 +U 11 +R 10 +U 8 +D 8 +L 10 +D 9 +U 13 +R 12 +L 10 +R 3 +U 3 +D 10 +R 3 +D 3 +L 6 +R 3 +U 5 +L 3 +R 10 +D 6 +L 10 +D 10 +R 13 +D 1 +R 9 +L 7 +D 12 +U 6 +R 4 +L 1 +U 7 +L 8 +U 7 +L 11 +U 11 +D 1 +U 5 +R 2 +D 1 +L 9 +U 13 +R 10 +L 3 +R 9 +D 10 +R 10 +U 2 +L 4 +R 5 +L 12 +R 7 +D 7 +R 9 +D 6 +L 10 +D 12 +R 10 +D 9 +L 13 +R 13 +L 3 +U 6 +D 8 +L 7 +R 4 +U 7 +L 10 +D 8 +R 12 +L 3 +R 6 +L 14 +R 7 +L 4 +U 8 +D 10 +L 9 +D 10 +R 6 +L 5 +R 8 +U 13 +L 2 +R 13 +L 10 +D 12 +U 4 +R 1 +D 1 +R 10 +L 9 +R 12 +U 10 +D 4 +L 3 +R 7 +D 13 +L 11 +D 3 +U 11 +D 12 +U 4 +R 11 +D 9 +R 3 +D 14 +U 3 +L 10 +D 5 +L 14 +R 13 +L 12 +D 14 +R 2 +U 13 +D 10 +L 13 +U 11 +R 9 +D 4 +L 13 +U 13 +R 5 +L 1 +R 14 +D 4 +U 8 +D 2 +R 2 +U 6 +D 10 +L 1 +U 9 +R 7 +D 2 +L 13 +R 8 +L 12 +R 12 +U 8 +L 14 +D 11 +R 6 +L 5 +R 10 +U 5 +D 12 +L 6 +U 13 +R 3 +D 8 +U 11 +L 7 +D 5 +R 12 +D 8 +R 13 +L 9 +U 4 +D 3 +L 3 +D 15 +L 14 +U 2 +L 10 +R 14 +U 1 +D 11 +L 2 +R 11 +L 12 +R 7 +L 4 +U 15 +D 15 +R 9 +L 9 +R 1 +D 11 +L 1 +U 3 +R 12 +D 7 +U 2 +D 6 +R 1 +D 13 +R 3 +U 10 +D 4 +L 6 +U 8 +L 8 +D 7 +L 6 +U 15 +D 7 +U 1 +D 1 +L 14 +D 3 +U 10 +L 2 +U 14 +D 2 +L 5 +R 3 +U 1 +D 13 +U 13 +D 9 +L 12 +R 5 +L 14 +U 3 +D 11 +R 9 +U 8 +D 5 +R 3 +L 13 +U 2 +L 10 +D 3 +U 2 +L 12 +D 13 +R 14 +U 10 +D 8 +L 8 +R 14 +L 6 +D 14 +L 8 +R 15 +D 10 +R 1 +L 2 +D 6 +L 9 +R 1 +L 4 +D 9 +U 8 +L 1 +R 9 +L 1 +D 5 +L 6 +U 9 +L 6 +R 3 +U 5 +R 12 +D 6 +R 8 +D 3 +U 13 +D 2 +U 2 +L 4 +U 11 +R 4 +L 13 +U 6 +L 12 +U 4 +D 6 +U 11 +D 5 +U 8 +L 10 +D 13 +L 5 +U 15 +L 4 +R 12 +D 1 +L 9 +U 8 +L 4 +U 8 +D 10 +U 12 +L 12 +D 5 +R 10 +D 3 +U 1 +L 6 +R 10 +L 5 +D 8 +U 8 +D 8 +R 6 +U 13 +D 8 +L 16 +R 11 +L 14 +D 15 +R 15 +L 8 +D 1 +U 6 +D 15 +R 9 +L 12 +D 13 +U 9 +D 15 +L 6 +R 9 +U 8 +D 15 +U 7 +L 4 +R 9 +D 2 +R 5 +U 6 +D 14 +L 11 +D 9 +R 2 +U 12 +L 2 +R 15 +U 2 +L 15 +R 9 +U 6 +L 2 +D 4 +U 1 +L 13 +D 5 +R 14 +D 1 +R 13 +U 9 +R 5 +L 4 +U 9 +D 6 +U 7 +R 16 +D 11 +U 8 +R 13 +D 7 +L 12 +D 8 +U 15 +D 11 +U 14 +L 14 +U 10 +L 8 +R 16 +L 3 +U 13 +D 5 +L 2 +R 8 +L 10 +D 6 +R 15 +D 11 +U 3 +D 12 +R 12 +L 15 +U 13 +L 14 +D 2 +R 6 +L 5 +R 2 +U 2 +D 11 +U 14 +L 9 +R 14 +D 17 +R 10 +D 1 +U 11 +L 3 +U 1 +D 17 +L 10 +R 6 +L 14 +U 4 +D 2 +U 17 +L 2 +R 10 +D 14 +L 5 +U 7 +D 7 +R 13 +U 9 +D 9 +U 7 +D 17 +U 15 +D 1 +L 4 +D 11 +L 16 +U 8 +L 6 +R 5 +L 9 +D 14 +L 13 +D 11 +R 3 +L 15 +D 9 +L 10 +D 11 +L 11 +U 2 +L 17 +D 10 +R 13 +L 11 +U 16 +L 8 +U 5 +D 7 +U 11 +D 1 +L 17 +U 12 +L 4 +R 12 +U 4 +R 10 +L 4 +U 11 +D 8 +L 5 +D 6 +U 4 +D 16 +U 6 +D 12 +L 3 +U 3 +L 16 +R 2 +U 14 +R 1 +L 14 +U 11 +L 7 +D 11 +R 2 +D 2 +L 6 +U 10 +L 10 +D 15 +R 12 +D 16 +L 3 +U 15 +R 15 +D 17 +U 17 +L 13 +R 5 +D 12 +L 9 +R 10 +D 4 +L 2 +D 14 +U 8 +R 6 +U 5 +D 1 +L 11 +R 12 +L 17 +U 2 +L 17 +D 2 +R 17 +L 17 +U 3 +D 14 +U 8 +L 14 +D 12 +R 17 +L 18 +D 3 +U 10 +L 7 +U 10 +R 5 +L 15 +D 10 +L 3 +R 12 +D 10 +U 6 +L 17 +D 9 +U 18 +R 7 +U 1 +D 1 +L 9 +U 2 +L 5 +U 9 +L 8 +U 17 +D 17 +L 17 +D 15 +R 13 +U 15 +D 8 +R 13 +D 17 +L 18 +R 5 +D 7 +R 6 +D 1 +R 3 +L 10 +U 10 +D 12 +L 8 +R 11 +U 6 +R 5 +L 9 +R 6 +U 15 +D 4 +R 8 +U 1 +R 18 +L 18 +U 10 +R 17 +D 10 +R 10 +U 16 +R 16 +U 5 +R 7 +D 15 +U 15 +R 2 +U 17 +L 14 +R 1 +U 2 +L 10 +R 17 +L 14 +U 13 +D 1 +L 16 +D 4 +U 9 +L 17 +U 9 +D 9 +L 18 +D 9 +U 5 +L 18 +U 6 +L 5 +U 10 +L 18 +D 13 +R 8 +L 17 +U 9 +L 14 +D 12 +U 2 +D 5 +U 2 +D 17 +L 18 +R 8 +L 7 +R 1 +D 13 +R 11 +D 10 +R 18 +D 2 +U 17 +D 17 +L 4 +R 16 +D 16 +L 2 +D 5 +R 4 +U 9 +R 6 +D 7 +L 13 +U 19 +R 7 +U 17 +L 9 +U 6 +D 1 +L 19 +U 7 +R 6 +L 11 +R 12 +D 6 +L 17 +R 18 +D 17 +L 2 +D 8 +U 15 +D 13 +L 10 +D 10 +L 17 +D 4 +L 12 +U 11 +L 3 +D 6 +U 18 +R 18 +U 16 +L 5 +D 9 +R 17 +L 17 +D 16 +R 12 +D 18 +U 14 +R 1 +U 12 +R 4 +L 6 +U 14 +R 18 +D 6 +U 2 +D 13 +U 15 +L 14 +R 3 +D 7 +L 6 +D 15 +U 17 +L 12 +D 2 +L 12 +R 10 +L 16 +D 15 +L 18 +U 9 +L 7 +U 13 +R 11 +U 9 +L 4 +U 12 +R 14 +D 11 +R 8 +U 4 +L 17 +R 14 +D 15 +R 1 +U 5 +R 3 +L 4 +R 9 +U 1 +D 10 +R 3 +U 16 +D 6 +L 1 +U 15 +D 9 +U 10 +L 11 +U 7 +L 5 +D 19 +L 8 +U 10 +L 19