From af1428b5e18285fe045b6793082b00fba5f00302 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mika=C3=ABl=20Capelle?= Date: Fri, 9 Dec 2022 10:45:00 +0100 Subject: [PATCH] Add day 9. --- 2022/day9.py | 73 ++ 2022/inputs/day9.txt | 2000 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 2073 insertions(+) create mode 100644 2022/day9.py create mode 100644 2022/inputs/day9.txt diff --git a/2022/day9.py b/2022/day9.py new file mode 100644 index 0000000..2d60f7f --- /dev/null +++ b/2022/day9.py @@ -0,0 +1,73 @@ +# -*- encoding: utf-8 -*- + +import sys + + +def move(head: tuple[int, int], command: str) -> tuple[int, int]: + + h_col, h_row = head + + if command == "L": + head = (h_col - 1, h_row) + elif command == "R": + head = (h_col + 1, h_row) + elif command == "U": + head = (h_col, h_row + 1) + elif command == "D": + head = (h_col, h_row - 1) + + return head + + +def follow(head: tuple[int, int], tail: tuple[int, int]) -> tuple[int, int]: + + h_col, h_row = head + t_col, t_row = tail + + # cover, nothing to do + if head == tail: + pass + elif h_col == t_col and abs(h_row - t_row) > 1: + diff = (h_row - t_row) // abs(h_row - t_row) + tail = (t_col, t_row + diff) + elif h_row == t_row and abs(h_col - t_col) > 1: + diff = (h_col - t_col) // abs(h_col - t_col) + tail = (t_col + diff, t_row) + elif abs(h_col - t_col) > 1 or abs(h_row - t_row) > 1: + c_diff = (h_col - t_col) // abs(h_col - t_col) + r_diff = (h_row - t_row) // abs(h_row - t_row) + tail = (t_col + c_diff, t_row + r_diff) + + return tail + + +def run(commands: list[str], n_blocks: int) -> list[tuple[int, int]]: + + blocks = [(0, 0) for _ in range(n_blocks)] + visited = [blocks[-1]] + + for command in commands: + blocks[0] = move(blocks[0], command) + + for i in range(0, n_blocks - 1): + blocks[i + 1] = follow(blocks[i], blocks[i + 1]) + + visited.append(blocks[-1]) + + return visited + + +lines = sys.stdin.read().splitlines() + +# flatten the commands +commands: list[str] = [] +for line in lines: + d, c = line.split() + commands.extend(d * int(c)) + + +visited_1 = run(commands, n_blocks=2) +print(f"answer 1 is {len(set(visited_1))}") + +visited_2 = run(commands, n_blocks=10) +print(f"answer 2 is {len(set(visited_2))}") diff --git a/2022/inputs/day9.txt b/2022/inputs/day9.txt new file mode 100644 index 0000000..a978a43 --- /dev/null +++ b/2022/inputs/day9.txt @@ -0,0 +1,2000 @@ +L 1 +R 2 +L 1 +U 2 +D 1 +R 1 +D 1 +L 2 +D 1 +U 2 +D 2 +U 2 +L 1 +U 1 +D 1 +U 2 +D 2 +L 1 +U 1 +L 1 +U 1 +L 1 +D 1 +L 1 +R 2 +L 1 +D 2 +R 2 +U 2 +R 2 +L 1 +D 1 +U 1 +D 2 +R 1 +D 1 +L 2 +D 2 +R 2 +D 2 +U 1 +D 2 +L 2 +D 2 +R 1 +L 2 +U 1 +D 2 +U 1 +L 2 +D 1 +R 1 +U 1 +R 2 +D 1 +L 1 +D 2 +U 1 +R 2 +D 2 +L 2 +U 1 +L 1 +D 1 +L 1 +U 2 +L 1 +D 2 +U 1 +D 2 +L 1 +D 2 +R 2 +U 1 +D 2 +U 2 +R 1 +L 1 +U 1 +R 1 +L 2 +D 1 +U 2 +L 2 +U 1 +L 1 +D 2 +R 1 +U 1 +L 1 +R 2 +U 1 +D 2 +U 1 +L 1 +D 2 +R 2 +U 1 +R 1 +D 2 +L 1 +D 2 +L 1 +D 1 +U 1 +L 1 +U 1 +R 1 +D 1 +L 2 +U 2 +D 3 +R 3 +L 2 +R 3 +L 1 +D 2 +R 2 +L 2 +U 3 +D 2 +L 2 +U 2 +R 3 +D 3 +R 1 +D 3 +U 3 +L 3 +R 1 +L 2 +U 1 +L 3 +U 3 +L 1 +U 2 +L 3 +U 1 +R 3 +D 1 +L 1 +D 2 +R 2 +L 1 +D 1 +L 3 +D 3 +U 1 +R 1 +U 2 +R 1 +L 1 +U 2 +L 3 +R 2 +D 2 +R 2 +L 1 +D 2 +U 3 +L 2 +D 1 +L 1 +D 2 +L 1 +D 2 +L 1 +R 2 +D 2 +L 3 +R 1 +U 2 +L 1 +R 1 +U 3 +D 3 +R 2 +D 2 +L 1 +U 1 +L 1 +D 3 +R 3 +D 3 +L 2 +R 1 +U 3 +R 2 +D 2 +U 3 +D 3 +U 1 +R 2 +D 1 +U 2 +D 1 +L 2 +D 3 +L 3 +U 2 +R 1 +L 3 +D 1 +R 2 +L 2 +D 3 +R 2 +D 1 +U 2 +R 3 +U 3 +D 1 +U 2 +L 1 +R 1 +D 2 +L 1 +U 1 +L 3 +U 1 +R 3 +D 2 +R 2 +U 4 +R 3 +L 2 +R 1 +L 4 +R 2 +L 4 +R 3 +D 3 +R 2 +L 4 +U 4 +R 3 +L 3 +R 1 +L 4 +D 3 +U 1 +L 1 +R 2 +D 1 +L 3 +U 2 +R 1 +U 1 +D 2 +L 1 +U 4 +D 2 +R 3 +L 1 +D 2 +L 3 +U 2 +D 2 +U 1 +L 4 +U 2 +D 4 +L 3 +U 1 +L 4 +R 1 +D 1 +R 4 +U 4 +D 2 +R 3 +D 4 +R 4 +D 4 +U 3 +D 1 +U 4 +R 1 +D 4 +U 2 +R 2 +D 4 +R 4 +L 4 +R 2 +D 4 +U 3 +L 3 +D 3 +L 2 +U 1 +R 1 +L 2 +D 2 +U 1 +L 4 +U 2 +R 2 +L 2 +U 1 +R 1 +U 4 +D 1 +L 1 +U 4 +L 1 +R 2 +U 4 +L 3 +U 2 +D 2 +U 4 +L 3 +R 2 +L 3 +U 4 +L 4 +U 2 +L 4 +D 3 +L 2 +U 3 +D 4 +U 1 +L 2 +U 1 +D 3 +R 1 +L 4 +U 1 +R 4 +U 2 +R 2 +U 5 +R 2 +D 2 +R 1 +U 5 +L 5 +U 1 +R 4 +U 1 +L 1 +D 5 +L 3 +D 1 +L 4 +D 4 +R 4 +U 3 +D 3 +R 5 +U 1 +L 3 +D 1 +R 4 +D 1 +L 3 +U 4 +R 4 +U 4 +L 5 +U 4 +L 2 +U 1 +L 5 +U 2 +R 4 +U 3 +R 2 +D 1 +U 5 +R 1 +D 4 +U 3 +L 1 +R 4 +D 5 +U 5 +R 5 +U 3 +D 3 +L 1 +U 4 +D 1 +U 1 +D 3 +R 4 +L 5 +D 4 +L 3 +U 5 +D 3 +L 5 +R 2 +U 1 +L 2 +R 5 +D 4 +U 2 +D 2 +R 5 +U 3 +R 4 +L 5 +D 2 +R 2 +U 3 +D 2 +L 3 +R 2 +U 3 +D 3 +U 5 +L 5 +R 2 +U 4 +R 2 +D 5 +U 3 +D 4 +L 1 +U 1 +L 3 +R 4 +U 1 +D 3 +U 1 +L 3 +R 3 +U 2 +R 3 +U 5 +L 4 +R 2 +L 3 +D 4 +R 3 +U 5 +R 4 +L 5 +R 5 +L 5 +D 1 +U 4 +D 1 +U 6 +D 3 +U 5 +R 3 +L 2 +U 3 +R 4 +U 1 +R 6 +U 2 +R 3 +L 4 +U 2 +D 1 +R 5 +U 1 +D 1 +R 3 +D 3 +L 5 +D 1 +R 3 +U 3 +D 4 +U 4 +R 5 +D 2 +L 6 +D 4 +U 2 +R 5 +U 5 +D 5 +R 5 +L 3 +R 5 +D 1 +U 3 +L 5 +U 5 +R 5 +D 6 +L 3 +R 1 +U 4 +L 4 +D 5 +L 3 +D 5 +L 1 +R 6 +U 1 +D 1 +U 4 +L 1 +D 2 +U 2 +R 3 +L 6 +R 4 +L 6 +U 3 +D 5 +L 4 +R 1 +L 6 +R 4 +L 6 +D 4 +U 4 +L 4 +R 3 +L 4 +R 2 +L 2 +R 6 +U 1 +D 6 +L 6 +R 3 +D 6 +U 3 +D 5 +L 1 +U 1 +L 5 +D 6 +R 6 +D 3 +U 2 +R 6 +U 4 +D 4 +U 2 +R 1 +D 2 +R 4 +U 1 +L 6 +R 5 +L 1 +U 1 +L 6 +D 2 +U 2 +L 2 +U 2 +R 3 +D 5 +U 3 +L 2 +R 7 +L 6 +D 6 +L 4 +R 6 +D 7 +L 3 +R 4 +U 1 +D 5 +R 1 +L 1 +U 2 +R 4 +U 3 +L 6 +R 4 +D 3 +U 7 +D 1 +L 6 +D 6 +R 1 +D 4 +R 3 +D 2 +R 1 +U 3 +L 7 +R 7 +L 2 +U 2 +D 3 +L 5 +D 3 +U 2 +R 7 +L 6 +U 3 +R 1 +U 7 +D 2 +U 1 +L 5 +D 1 +U 6 +L 3 +U 6 +D 7 +U 5 +L 2 +R 3 +L 5 +R 4 +D 3 +U 5 +L 6 +R 1 +U 4 +L 4 +U 5 +L 7 +D 6 +U 4 +R 4 +D 7 +U 5 +D 7 +R 6 +L 5 +U 4 +R 1 +D 2 +U 6 +D 6 +U 6 +R 7 +L 3 +R 6 +D 1 +R 5 +L 6 +D 5 +L 4 +R 4 +L 6 +R 6 +L 3 +D 2 +L 6 +D 4 +R 5 +L 5 +U 2 +R 2 +L 6 +R 7 +L 6 +U 6 +D 5 +U 7 +L 4 +U 6 +D 7 +U 3 +D 6 +L 6 +U 7 +D 5 +U 1 +R 2 +L 1 +R 7 +L 6 +D 5 +U 8 +D 3 +U 8 +D 1 +U 7 +D 2 +L 4 +R 2 +U 5 +D 6 +L 1 +R 1 +L 5 +R 7 +D 8 +U 2 +R 7 +U 4 +D 5 +U 8 +D 7 +U 4 +R 3 +D 2 +L 8 +D 4 +L 8 +D 5 +U 7 +R 8 +U 2 +L 1 +U 6 +D 3 +U 6 +L 3 +U 2 +D 8 +U 1 +R 4 +L 3 +R 1 +L 6 +U 6 +L 4 +R 7 +D 8 +U 4 +R 1 +D 7 +L 4 +D 6 +R 4 +L 3 +D 5 +R 7 +L 5 +D 3 +U 8 +L 8 +D 4 +R 1 +U 3 +L 5 +R 4 +L 1 +R 8 +U 7 +D 3 +U 2 +D 7 +L 4 +U 8 +L 7 +U 2 +D 1 +R 7 +L 4 +U 1 +R 2 +D 5 +L 1 +U 5 +L 8 +R 7 +U 1 +D 1 +U 5 +D 7 +L 6 +D 4 +U 7 +D 8 +R 1 +D 3 +U 4 +L 6 +R 7 +L 8 +R 1 +D 7 +L 3 +D 6 +U 5 +L 6 +R 7 +L 9 +D 2 +R 1 +L 4 +D 5 +L 6 +D 8 +U 7 +L 7 +U 5 +D 8 +U 8 +L 6 +U 6 +D 8 +U 9 +D 1 +R 4 +L 9 +D 4 +R 4 +L 3 +U 8 +D 2 +R 3 +U 6 +L 8 +D 1 +R 7 +D 5 +R 9 +D 1 +L 7 +D 2 +U 2 +L 9 +R 5 +L 9 +D 6 +U 6 +L 2 +D 5 +R 3 +L 4 +D 7 +U 2 +R 6 +U 1 +L 8 +R 3 +L 6 +U 5 +R 9 +U 8 +L 2 +D 9 +U 9 +D 7 +L 1 +U 6 +R 4 +L 2 +R 1 +D 1 +R 7 +L 7 +U 6 +D 8 +U 6 +D 5 +L 3 +D 8 +U 6 +L 2 +U 8 +R 8 +D 7 +U 9 +R 6 +U 1 +R 2 +D 5 +R 4 +L 2 +U 3 +D 3 +L 5 +U 1 +L 5 +D 8 +U 9 +L 8 +U 9 +L 9 +U 5 +R 7 +U 7 +D 4 +R 2 +L 8 +U 9 +D 6 +U 5 +L 9 +U 3 +L 5 +U 9 +L 7 +D 5 +L 8 +R 9 +L 10 +D 1 +L 10 +R 4 +L 7 +U 5 +L 10 +U 2 +R 10 +L 3 +U 10 +R 2 +U 6 +L 2 +R 8 +L 8 +R 4 +U 1 +R 6 +L 2 +D 6 +L 10 +D 9 +L 2 +U 5 +R 1 +D 9 +R 9 +U 3 +D 6 +L 10 +U 4 +R 6 +U 9 +R 6 +U 6 +L 4 +R 8 +D 3 +U 8 +L 3 +U 6 +R 2 +L 2 +D 3 +U 3 +R 3 +D 10 +R 9 +D 1 +R 6 +L 4 +U 4 +D 1 +R 2 +U 6 +R 3 +U 5 +R 8 +L 5 +U 2 +R 5 +D 10 +L 7 +R 4 +D 9 +U 6 +L 7 +R 10 +D 3 +U 5 +R 1 +U 2 +R 9 +U 10 +R 8 +L 8 +U 4 +R 9 +L 6 +U 7 +L 4 +U 1 +L 6 +U 4 +L 7 +R 4 +U 9 +D 9 +R 9 +L 4 +R 3 +D 7 +L 3 +U 6 +D 2 +U 8 +R 8 +L 6 +D 5 +L 6 +R 1 +L 3 +U 10 +L 2 +D 7 +R 7 +L 8 +U 4 +R 1 +D 5 +L 10 +R 6 +U 1 +R 7 +L 6 +R 11 +U 11 +R 3 +L 5 +U 7 +D 7 +L 9 +U 4 +L 5 +D 11 +L 4 +R 1 +L 10 +U 9 +L 8 +U 10 +R 7 +U 3 +R 3 +D 1 +U 4 +L 5 +D 6 +R 8 +D 10 +R 4 +L 9 +U 6 +R 10 +D 2 +U 9 +R 10 +U 5 +R 4 +U 3 +R 4 +L 1 +U 3 +R 7 +L 3 +D 3 +U 6 +L 8 +U 7 +L 7 +R 4 +L 1 +D 5 +U 1 +R 4 +D 1 +R 1 +D 6 +L 1 +D 1 +L 3 +D 7 +R 1 +U 7 +L 11 +U 7 +L 9 +D 7 +R 5 +L 11 +D 3 +R 5 +U 3 +L 9 +R 4 +U 2 +L 9 +U 1 +R 4 +U 8 +D 1 +R 1 +D 5 +R 5 +U 11 +L 10 +U 5 +D 4 +R 7 +U 4 +D 10 +L 4 +D 6 +U 6 +L 8 +U 8 +D 1 +L 4 +R 1 +L 10 +D 5 +R 6 +U 4 +L 4 +U 9 +L 7 +R 6 +U 8 +L 4 +D 5 +R 4 +L 1 +U 3 +D 7 +R 3 +U 3 +L 2 +D 4 +R 2 +L 6 +R 11 +D 2 +L 6 +U 2 +R 12 +L 6 +D 12 +R 11 +L 9 +D 9 +R 5 +U 2 +L 5 +D 10 +R 4 +U 4 +R 8 +U 2 +R 6 +U 3 +D 7 +U 11 +L 8 +D 8 +U 11 +D 2 +U 3 +R 7 +D 9 +R 3 +L 11 +U 3 +L 7 +D 6 +L 3 +D 2 +R 1 +U 9 +L 6 +D 6 +L 5 +R 8 +L 4 +R 9 +U 5 +D 11 +R 7 +D 11 +L 6 +R 2 +L 5 +U 6 +L 5 +D 4 +R 3 +D 8 +R 8 +D 2 +U 1 +R 6 +U 5 +L 7 +D 11 +U 4 +L 1 +R 8 +D 6 +R 6 +U 11 +L 8 +D 2 +L 6 +R 10 +L 4 +D 4 +U 3 +D 12 +U 10 +L 3 +U 3 +D 7 +R 9 +L 2 +U 11 +L 11 +U 4 +R 2 +L 5 +D 11 +U 5 +L 10 +U 4 +R 1 +U 11 +R 12 +U 2 +L 7 +U 12 +L 1 +D 9 +U 4 +L 4 +D 12 +L 5 +D 1 +R 9 +U 11 +L 6 +D 8 +L 11 +U 9 +D 6 +L 6 +R 6 +U 5 +D 10 +R 4 +D 4 +U 10 +D 2 +L 12 +D 3 +L 7 +D 13 +U 11 +D 4 +L 6 +U 4 +D 10 +L 2 +R 4 +D 7 +U 7 +R 9 +L 8 +R 3 +U 8 +D 10 +L 2 +D 2 +L 2 +D 11 +L 8 +U 12 +L 1 +U 9 +L 6 +R 7 +L 6 +D 9 +U 10 +R 2 +L 3 +U 5 +L 3 +D 9 +R 8 +D 1 +L 11 +D 1 +U 10 +D 5 +L 10 +U 1 +L 2 +D 11 +L 8 +R 6 +D 6 +U 13 +L 1 +D 3 +L 11 +D 13 +R 9 +D 6 +L 7 +U 7 +R 8 +L 3 +D 3 +L 9 +D 5 +U 12 +D 6 +L 8 +U 8 +L 12 +U 10 +R 2 +L 8 +D 12 +R 4 +L 3 +R 7 +U 12 +R 2 +L 2 +R 10 +L 12 +R 1 +L 1 +R 3 +L 2 +R 2 +D 3 +R 8 +L 10 +R 8 +L 11 +U 3 +D 12 +R 8 +U 12 +D 7 +L 6 +D 14 +L 11 +U 12 +L 10 +R 4 +U 11 +R 5 +U 13 +R 3 +U 9 +R 2 +L 2 +D 3 +L 3 +R 1 +D 11 +L 1 +D 6 +R 9 +L 10 +R 8 +D 5 +U 6 +D 12 +U 12 +L 10 +D 8 +R 4 +D 3 +L 10 +R 14 +L 5 +D 5 +L 1 +U 3 +R 10 +U 2 +D 2 +L 12 +R 7 +U 1 +D 13 +R 11 +L 13 +U 8 +L 10 +R 2 +U 8 +D 10 +R 14 +U 2 +L 14 +D 12 +R 8 +D 8 +U 5 +R 7 +L 14 +R 6 +U 13 +D 7 +U 2 +L 7 +R 4 +L 8 +U 7 +R 3 +D 1 +R 3 +D 14 +U 2 +R 1 +D 7 +L 4 +D 14 +U 8 +L 9 +U 11 +L 5 +R 2 +D 4 +L 3 +U 9 +R 4 +U 4 +R 1 +U 3 +L 6 +D 14 +U 12 +R 11 +D 6 +U 8 +D 14 +R 14 +L 13 +R 11 +D 2 +U 6 +L 7 +D 9 +R 7 +D 14 +L 2 +R 7 +L 13 +R 3 +D 8 +U 5 +L 14 +D 7 +U 5 +D 12 +R 11 +U 1 +D 10 +L 7 +R 7 +D 2 +L 4 +U 13 +R 10 +D 1 +L 9 +D 14 +U 6 +D 5 +R 8 +U 7 +L 9 +R 15 +L 5 +U 15 +R 9 +U 3 +L 12 +R 2 +D 8 +U 8 +D 11 +R 14 +D 14 +U 5 +R 13 +D 13 +L 7 +U 14 +D 8 +R 12 +D 2 +R 2 +L 6 +R 4 +U 2 +R 14 +L 5 +R 2 +D 11 +U 1 +L 14 +D 1 +R 5 +D 12 +U 4 +D 8 +U 6 +D 12 +L 5 +U 4 +R 15 +D 4 +R 4 +U 4 +R 3 +L 1 +U 8 +R 4 +D 7 +U 13 +R 8 +L 1 +D 3 +L 3 +U 11 +L 12 +U 10 +L 12 +U 13 +D 2 +L 7 +U 1 +R 1 +U 15 +D 9 +L 1 +R 6 +L 10 +D 7 +U 5 +L 8 +U 9 +R 5 +U 15 +D 7 +L 9 +R 15 +L 15 +R 6 +D 2 +R 2 +L 5 +U 5 +L 11 +D 8 +R 15 +L 5 +D 10 +L 13 +D 13 +R 13 +D 14 +L 11 +R 2 +D 6 +U 16 +D 13 +L 8 +D 2 +L 5 +U 8 +L 4 +R 9 +D 4 +U 5 +D 9 +U 7 +L 11 +D 8 +U 7 +D 10 +U 11 +R 5 +U 14 +L 12 +R 14 +D 3 +R 3 +D 1 +U 8 +D 2 +R 14 +D 8 +R 6 +L 9 +D 6 +R 4 +L 5 +D 14 +R 11 +L 4 +R 12 +D 15 +R 16 +U 13 +R 7 +U 15 +D 8 +U 11 +L 11 +D 14 +U 14 +D 13 +U 14 +L 14 +D 11 +U 9 +R 5 +L 15 +R 5 +D 6 +U 10 +R 10 +D 16 +R 13 +D 9 +U 10 +R 5 +L 6 +D 15 +U 10 +L 15 +R 7 +L 13 +D 6 +U 7 +L 11 +U 4 +R 4 +L 11 +R 12 +D 6 +L 8 +D 8 +L 12 +D 1 +R 15 +D 12 +L 8 +R 11 +L 10 +D 9 +U 6 +L 2 +R 9 +L 7 +R 4 +U 6 +D 11 +L 6 +D 11 +L 14 +R 10 +U 4 +R 12 +U 10 +D 7 +R 7 +L 7 +U 1 +D 3 +L 1 +U 9 +D 4 +U 15 +L 11 +U 11 +D 11 +L 9 +D 13 +L 15 +D 11 +R 16 +U 11 +D 6 +L 10 +R 10 +D 4 +R 8 +U 17 +D 12 +L 16 +U 14 +R 15 +U 15 +D 6 +R 7 +U 5 +L 9 +U 6 +D 14 +U 4 +L 8 +D 6 +R 16 +U 4 +R 7 +D 3 +U 3 +D 15 +L 1 +U 1 +D 1 +R 1 +U 7 +D 12 +R 1 +D 2 +U 5 +L 13 +U 7 +R 10 +U 15 +D 17 +L 16 +D 8 +L 15 +U 2 +R 2 +D 14 +L 4 +U 7 +D 2 +L 15 +R 5 +U 11 +R 2 +U 8 +D 12 +R 13 +L 7 +D 4 +R 6 +U 2 +D 9 +U 6 +L 10 +R 1 +L 15 +R 12 +L 2 +D 16 +L 2 +R 7 +U 15 +L 3 +D 12 +U 10 +R 14 +L 7 +D 9 +U 13 +R 8 +U 10 +R 7 +L 12 +R 15 +U 10 +D 5 +L 11 +R 9 +D 4 +L 9 +D 8 +R 13 +L 13 +D 7 +L 3 +D 3 +U 14 +D 14 +U 11 +D 17 +R 1 +D 10 +L 12 +R 1 +U 4 +D 16 +U 18 +L 9 +U 2 +R 13 +L 7 +U 7 +R 10 +L 17 +R 7 +U 4 +L 8 +U 1 +L 13 +U 12 +D 7 +R 10 +L 18 +U 12 +D 2 +U 7 +D 12 +R 13 +D 9 +R 13 +U 1 +L 9 +R 3 +L 3 +D 15 +R 11 +L 2 +R 18 +L 7 +R 10 +L 10 +D 8 +L 4 +R 6 +U 12 +L 8 +U 16 +D 18 +L 9 +U 15 +R 13 +D 18 +U 6 +R 7 +U 7 +L 16 +U 18 +R 10 +L 4 +R 2 +U 2 +L 5 +R 8 +U 14 +L 5 +U 2 +D 17 +R 7 +L 13 +D 15 +R 2 +D 2 +R 6 +L 10 +R 4 +U 3 +R 18 +D 16 +L 13 +U 8 +D 5 +L 9 +R 4 +D 7 +R 9 +L 5 +D 13 +L 9 +D 13 +U 15 +L 3 +D 15 +U 16 +R 2 +U 18 +R 18 +L 6 +D 12 +R 10 +U 10 +L 3 +R 3 +D 7 +L 11 +R 1 +D 7 +L 8 +R 15 +L 3 +U 12 +R 7 +D 19 +R 13 +D 11 +U 15 +D 3 +U 6 +D 15 +R 8 +U 5 +L 2 +D 12 +U 3 +D 3 +L 3 +D 9 +L 8 +R 19 +L 12 +U 13 +L 1 +D 14 +R 9 +L 15 +R 15 +L 14 +D 2 +U 3 +L 17 +U 15 +D 13 +R 4 +D 18 +L 4 +R 2 +D 16 +R 9 +L 3 +U 14 +D 1 +R 19 +U 11 +D 6 +U 12 +R 5 +U 9 +L 8 +D 14 +R 5 +U 16 +L 12 +U 17 +R 17 +U 19 +L 1 +D 9 +U 10 +L 4 +R 13 +U 15 +D 7 +R 14 +U 15 +R 7 +D 2 +R 7 +L 10 +D 17 +U 5 +D 1 +L 18 +D 9 +R 16 +L 18 +R 3 +D 7 +R 11 +D 14 +U 15 +R 9 +D 9 +R 7 +U 17 +R 3 +D 19 +R 4 +U 10 +L 11 +D 2 +L 2 +D 11 +R 14 +D 15 +R 13 +D 10 +R 4 +U 12 +L 13 +U 12 +R 10 +L 4 +U 17 +D 4 +R 4 +U 7 +L 10 +R 12 +L 18 +U 11 +D 8 +R 13 +U 19