diff --git a/2022/AOC09.py b/2022/AOC09.py new file mode 100644 index 0000000..dff3cf6 --- /dev/null +++ b/2022/AOC09.py @@ -0,0 +1,88 @@ +from typing import List, Tuple, Set + +from _utils import read_input, timer, Solution, Point + + +def process_input(filename: str): + _input = read_input(filename) + return _input + + +def get_neighbors(head: Point, tail: Point) -> bool: + x, y = head + neighbors = [(x + dx, y + dy) for dx in range(-1, 2) for dy in range(-1, 2)] + return tail in neighbors + + +def move_head(direction: str, x: int, y: int) -> Point: + if direction == "R": + x += 1 + elif direction == "L": + x -= 1 + elif direction == "U": + y -= 1 + elif direction == "D": + y += 1 + return x, y + + +def adjust_tail(head: Point, tail: Point) -> Point: + x, y = head + x2, y2 = tail + + if get_neighbors(head, tail): + return tail + elif (y == y2) and x2 - x == 2: + x2 -= 1 # right + elif (y == y2) and x - x2 == 2: + x2 += 1 # left + elif (x == x2) and y - y2 == 2: + y2 += 1 # down + elif (x == x2) and y2 - y == 2: + y2 -= 1 # up + elif x > x2 and y < y2: # top right + x2 += 1 # right + y2 -= 1 # up + elif x > x2 and y > y2: # bottom right + x2 += 1 # right + y2 += 1 # down + elif x < x2 and y > y2: # bottom left + x2 -= 1 # left + y2 += 1 # down + elif x < x2 and y < y2: # top left + x2 -= 1 # left + y2 -= 1 # up + else: + raise Exception + + return (x2, y2) + + +def simulate(_input: List[str], len_rope: int = 2) -> int: + knots = [(0, 0) for i in range(len_rope)] + visited = set() + + for line in _input: + direction, step = line.split(" ") + for r in range(int(step)): + new_knots = [k for k in knots] + new_knots[0] = move_head(direction, *new_knots[0]) + for i in range(1, len_rope): + new_knots[i] = adjust_tail(new_knots[i - 1], new_knots[i]) + visited.add(new_knots[-1]) + knots = new_knots + return len(visited) + + +@timer +def main(filename: str) -> Solution: + _input = process_input(filename) + part_1_solution = simulate(_input, len_rope=2) + part_2_solution = simulate(_input, len_rope=10) + return part_1_solution, part_2_solution + + +if __name__ == "__main__": + part_1_solution, part_2_solution = main("aoc9.txt") + print(f"PART 1: {part_1_solution}") # 6470 + print(f"PART 2: {part_2_solution}") # 2658 diff --git a/2022/aoc9.txt b/2022/aoc9.txt new file mode 100644 index 0000000..da963e8 --- /dev/null +++ b/2022/aoc9.txt @@ -0,0 +1,2000 @@ +U 2 +L 2 +U 1 +R 2 +D 2 +L 1 +R 1 +U 2 +D 1 +L 2 +D 2 +R 2 +D 1 +L 1 +U 2 +D 2 +R 1 +U 1 +L 1 +D 1 +L 1 +R 2 +U 1 +D 2 +U 2 +D 1 +L 1 +D 1 +L 2 +R 2 +D 2 +R 1 +D 2 +R 1 +D 2 +R 1 +U 2 +L 1 +U 2 +R 2 +D 2 +U 1 +R 1 +L 2 +D 1 +L 1 +R 1 +D 2 +R 2 +L 1 +R 2 +U 1 +L 2 +R 1 +D 1 +R 2 +U 2 +R 2 +L 1 +U 2 +R 1 +L 1 +U 2 +R 2 +D 2 +U 1 +L 2 +D 2 +R 1 +L 2 +D 2 +L 2 +R 1 +L 1 +U 2 +D 1 +U 1 +D 1 +L 1 +D 2 +U 1 +L 2 +R 2 +D 1 +U 1 +D 2 +L 2 +D 1 +R 1 +U 2 +D 2 +L 2 +R 2 +U 1 +D 1 +U 1 +L 1 +D 2 +R 1 +D 2 +U 1 +D 2 +U 2 +L 2 +R 2 +D 2 +R 1 +U 2 +R 2 +L 2 +U 1 +L 3 +U 3 +D 1 +U 2 +R 1 +U 3 +R 2 +U 3 +D 1 +R 1 +U 2 +D 2 +U 2 +D 2 +R 2 +U 3 +D 1 +L 1 +R 2 +U 2 +L 3 +U 3 +D 2 +L 3 +U 3 +R 2 +D 3 +L 3 +U 2 +D 2 +U 3 +R 1 +D 1 +R 2 +U 3 +D 3 +R 3 +D 2 +L 3 +D 2 +R 3 +D 1 +R 2 +U 1 +D 3 +R 2 +D 1 +U 3 +L 1 +U 2 +L 1 +R 3 +D 1 +L 1 +D 1 +R 2 +U 2 +R 1 +D 1 +R 2 +D 1 +R 3 +L 3 +U 1 +R 2 +U 1 +L 1 +D 1 +U 3 +D 1 +L 1 +R 1 +U 1 +D 3 +U 1 +R 3 +U 1 +L 1 +D 2 +R 2 +U 1 +R 1 +L 2 +R 1 +U 2 +L 3 +R 3 +L 1 +R 3 +D 3 +U 3 +R 1 +U 2 +L 2 +D 2 +R 3 +L 2 +R 3 +U 1 +L 1 +R 2 +D 2 +R 3 +U 2 +D 3 +R 2 +L 1 +D 3 +R 2 +L 3 +U 2 +L 1 +U 2 +R 1 +U 2 +D 1 +L 2 +U 3 +R 1 +U 4 +R 1 +U 4 +R 1 +L 1 +D 3 +L 3 +R 3 +U 4 +L 1 +R 2 +D 4 +U 2 +L 3 +U 1 +R 4 +D 1 +L 1 +U 4 +D 4 +L 3 +R 2 +D 4 +R 4 +D 1 +U 2 +L 4 +U 3 +D 2 +L 4 +D 2 +L 4 +U 2 +D 4 +L 1 +D 2 +U 4 +L 2 +U 1 +D 3 +U 4 +D 2 +L 1 +R 2 +L 4 +U 4 +L 3 +R 4 +D 3 +R 4 +D 2 +L 3 +U 2 +L 3 +U 1 +D 3 +L 4 +R 2 +D 2 +L 1 +U 2 +R 2 +L 1 +D 2 +U 3 +L 1 +U 1 +L 4 +U 4 +L 2 +R 1 +U 1 +R 4 +L 4 +D 2 +L 4 +D 4 +L 3 +U 4 +D 4 +L 2 +U 1 +L 1 +R 1 +L 4 +U 4 +L 2 +D 1 +R 2 +D 2 +L 2 +R 2 +L 1 +U 3 +L 1 +U 2 +D 2 +R 2 +D 3 +L 4 +R 2 +L 3 +R 3 +U 3 +L 5 +U 1 +D 3 +L 1 +U 5 +L 3 +U 4 +L 4 +R 5 +D 5 +R 1 +L 3 +D 1 +U 5 +R 3 +U 4 +D 4 +U 1 +D 4 +U 4 +R 4 +U 4 +R 4 +U 5 +R 3 +D 3 +L 1 +D 3 +U 4 +R 2 +U 2 +R 2 +U 2 +L 3 +R 4 +L 2 +D 5 +U 4 +D 4 +L 4 +R 4 +U 5 +R 1 +D 4 +L 4 +U 1 +L 2 +U 3 +D 1 +R 5 +U 4 +D 5 +L 5 +D 2 +L 1 +U 3 +D 4 +R 4 +L 2 +R 4 +D 3 +R 5 +L 4 +R 1 +D 3 +L 2 +R 5 +D 3 +R 1 +U 1 +L 5 +D 1 +U 4 +L 2 +U 4 +D 5 +L 4 +D 5 +L 2 +D 3 +R 5 +L 2 +D 1 +R 5 +D 1 +L 2 +U 1 +D 1 +L 3 +R 4 +L 1 +D 1 +U 3 +D 1 +R 2 +D 5 +R 3 +D 5 +L 2 +D 2 +U 5 +D 3 +R 5 +D 3 +R 4 +U 2 +L 5 +R 2 +D 5 +R 1 +U 5 +R 6 +D 6 +U 2 +R 3 +L 2 +U 4 +R 1 +D 6 +L 3 +U 5 +R 2 +L 6 +U 1 +D 5 +L 3 +R 3 +U 5 +L 1 +R 3 +U 3 +L 3 +R 6 +D 6 +L 3 +U 2 +R 1 +L 4 +R 5 +L 6 +R 4 +D 6 +U 6 +L 6 +U 2 +L 4 +D 6 +R 2 +D 2 +R 3 +D 2 +L 1 +U 4 +R 4 +D 1 +R 2 +L 1 +D 5 +L 6 +U 6 +D 2 +L 2 +D 1 +U 3 +D 1 +L 4 +U 5 +R 6 +U 5 +L 2 +R 6 +D 5 +R 3 +L 4 +U 6 +L 3 +D 6 +L 4 +R 5 +L 5 +R 4 +D 4 +L 5 +R 3 +U 6 +D 6 +L 3 +D 6 +U 1 +D 5 +L 5 +R 3 +L 4 +R 1 +L 1 +U 3 +D 6 +U 6 +R 2 +D 1 +U 2 +L 1 +R 5 +U 1 +L 5 +U 3 +R 3 +D 3 +L 4 +D 6 +U 1 +R 5 +L 3 +U 5 +R 2 +U 5 +L 3 +D 6 +R 6 +D 2 +R 5 +U 3 +D 6 +U 7 +R 7 +L 7 +U 2 +L 6 +U 2 +R 5 +L 7 +U 2 +D 5 +U 2 +R 2 +U 2 +L 1 +D 5 +U 5 +R 2 +U 6 +R 2 +D 3 +R 1 +D 4 +L 3 +R 5 +U 7 +D 6 +U 5 +D 2 +L 5 +U 5 +L 5 +R 7 +U 3 +L 7 +U 7 +L 3 +U 5 +D 7 +L 4 +D 6 +L 2 +U 7 +D 1 +L 6 +R 6 +D 7 +U 5 +L 2 +D 7 +U 1 +D 5 +L 2 +U 2 +D 1 +U 7 +R 1 +D 3 +L 4 +D 5 +R 4 +L 6 +R 1 +L 1 +D 2 +R 5 +U 4 +L 2 +D 7 +R 1 +U 3 +L 2 +U 3 +L 2 +U 6 +D 1 +U 3 +L 2 +U 4 +R 3 +L 7 +D 7 +R 6 +L 1 +R 3 +U 1 +R 3 +D 5 +R 2 +U 4 +R 1 +U 1 +L 6 +D 7 +U 5 +D 1 +R 2 +U 1 +L 6 +R 6 +U 6 +D 1 +U 4 +D 4 +U 4 +L 2 +D 5 +U 4 +R 4 +U 7 +D 4 +U 5 +D 5 +U 8 +L 6 +U 5 +L 1 +D 5 +R 1 +D 7 +L 8 +U 4 +R 7 +U 7 +D 4 +L 4 +U 7 +D 1 +R 4 +L 2 +U 2 +R 7 +L 1 +R 2 +L 2 +R 1 +L 3 +D 7 +L 3 +D 7 +U 6 +L 1 +D 4 +U 2 +D 8 +R 4 +D 2 +R 7 +L 8 +U 5 +L 7 +U 5 +R 1 +D 4 +R 8 +L 2 +R 7 +L 4 +U 6 +R 3 +D 6 +L 8 +R 5 +U 5 +R 1 +D 3 +U 8 +R 3 +D 5 +L 1 +D 2 +R 8 +D 3 +R 6 +L 2 +R 1 +U 5 +R 5 +U 7 +L 3 +R 3 +L 8 +D 5 +L 2 +D 3 +L 5 +D 6 +L 5 +U 2 +R 3 +U 5 +R 7 +D 2 +U 5 +R 2 +D 3 +L 5 +R 1 +U 7 +L 5 +D 5 +R 4 +U 6 +D 8 +R 2 +D 4 +L 3 +R 4 +D 1 +L 7 +U 8 +L 3 +U 6 +D 6 +L 4 +D 1 +U 6 +L 4 +R 2 +L 5 +D 5 +L 5 +D 6 +R 2 +U 1 +L 7 +R 4 +D 9 +U 1 +L 3 +D 7 +L 9 +D 3 +U 9 +L 6 +D 6 +U 5 +D 5 +R 2 +D 8 +R 2 +D 1 +U 9 +D 7 +R 2 +D 3 +U 1 +L 3 +D 5 +R 3 +L 6 +D 7 +U 2 +R 8 +U 2 +L 6 +D 4 +L 5 +R 5 +L 6 +D 5 +L 1 +U 8 +D 1 +L 9 +D 6 +R 5 +D 4 +U 2 +R 9 +D 1 +U 4 +D 1 +U 7 +L 4 +R 4 +D 8 +U 3 +R 7 +L 1 +D 4 +L 9 +U 7 +L 6 +R 2 +L 6 +D 4 +L 8 +U 8 +L 2 +R 1 +L 9 +D 9 +L 2 +U 7 +L 5 +D 2 +U 1 +L 6 +D 6 +L 1 +R 8 +D 3 +R 8 +L 6 +U 7 +D 9 +U 7 +L 7 +D 4 +R 8 +D 3 +R 9 +L 1 +U 4 +L 2 +R 9 +L 3 +D 9 +R 7 +D 3 +U 4 +D 9 +R 4 +L 6 +U 9 +D 7 +U 8 +D 7 +L 1 +R 2 +U 3 +D 7 +U 5 +R 4 +L 8 +D 9 +L 1 +U 9 +L 1 +D 1 +L 2 +U 2 +R 8 +D 6 +L 4 +U 9 +L 3 +R 9 +U 4 +L 5 +R 6 +U 6 +D 6 +L 5 +D 4 +L 9 +R 1 +L 3 +D 8 +L 1 +R 2 +D 8 +U 10 +L 1 +D 8 +L 4 +U 7 +D 4 +R 10 +D 5 +L 5 +U 10 +R 3 +U 6 +L 10 +R 2 +U 5 +R 7 +L 5 +R 6 +U 4 +D 8 +U 8 +D 7 +R 8 +U 3 +D 7 +R 4 +D 4 +L 8 +R 2 +U 9 +R 1 +L 7 +R 6 +D 2 +U 9 +R 4 +D 9 +R 7 +D 6 +U 3 +L 4 +D 9 +L 9 +D 8 +L 4 +R 4 +U 6 +D 2 +U 3 +D 1 +L 1 +R 10 +L 1 +D 2 +R 4 +U 6 +L 3 +D 4 +L 4 +D 1 +L 9 +D 8 +R 5 +D 3 +U 2 +D 9 +R 10 +D 10 +R 10 +U 5 +D 4 +R 4 +D 4 +L 8 +D 4 +R 10 +D 9 +L 8 +D 1 +R 1 +D 8 +L 1 +D 8 +R 4 +U 8 +R 4 +U 4 +L 4 +U 8 +D 4 +L 8 +D 3 +U 3 +R 5 +D 9 +L 10 +R 8 +U 5 +L 4 +U 8 +R 6 +D 3 +L 8 +U 11 +D 4 +R 3 +L 5 +D 10 +U 11 +D 2 +L 5 +D 4 +R 4 +D 5 +R 11 +L 7 +U 9 +R 6 +L 7 +D 6 +R 4 +D 4 +U 9 +R 6 +D 2 +U 3 +D 8 +L 6 +U 6 +R 11 +U 10 +R 6 +L 5 +R 4 +D 1 +L 10 +R 5 +U 4 +R 3 +D 4 +U 9 +R 8 +D 4 +U 11 +L 2 +D 9 +U 5 +R 3 +D 4 +R 6 +U 11 +R 4 +D 2 +L 1 +R 1 +U 4 +L 5 +U 9 +L 8 +R 6 +D 11 +L 4 +D 5 +L 11 +D 7 +U 11 +D 3 +U 3 +L 5 +R 9 +D 2 +L 9 +R 7 +L 3 +D 7 +L 10 +D 1 +L 5 +U 8 +D 1 +L 5 +U 11 +D 8 +R 6 +D 9 +U 2 +D 11 +R 8 +U 5 +D 6 +R 1 +U 7 +D 10 +L 8 +D 2 +L 7 +D 9 +R 12 +U 11 +R 8 +D 9 +R 1 +D 10 +L 3 +R 10 +D 9 +L 2 +R 3 +D 6 +L 12 +U 3 +R 2 +U 11 +R 8 +L 12 +D 9 +R 10 +L 2 +D 6 +L 8 +U 4 +R 5 +U 8 +L 11 +R 7 +D 3 +L 2 +R 2 +U 4 +R 12 +L 8 +U 1 +R 5 +L 9 +D 7 +R 9 +D 8 +L 2 +R 12 +L 5 +D 6 +R 10 +U 11 +R 12 +L 9 +D 5 +L 7 +U 7 +R 9 +L 10 +R 11 +U 11 +D 8 +L 3 +U 10 +D 1 +R 11 +L 7 +R 5 +L 11 +D 6 +U 5 +D 5 +U 12 +D 7 +L 1 +R 3 +D 8 +L 10 +R 2 +D 10 +R 12 +U 10 +R 7 +U 12 +R 11 +U 5 +D 12 +R 6 +D 1 +U 2 +L 8 +R 7 +D 12 +U 5 +R 10 +L 2 +R 3 +D 10 +U 2 +L 8 +D 6 +R 12 +L 5 +R 7 +U 1 +R 2 +L 5 +D 1 +U 12 +L 2 +U 6 +D 8 +U 3 +D 11 +L 5 +R 6 +L 10 +U 9 +D 6 +R 5 +L 4 +R 6 +L 9 +D 12 +U 7 +L 2 +D 6 +L 1 +U 1 +R 7 +L 13 +D 8 +U 4 +L 5 +D 11 +U 12 +R 5 +U 7 +D 5 +L 4 +D 9 +L 9 +U 1 +L 9 +U 1 +L 2 +U 13 +L 2 +R 11 +L 7 +R 8 +U 11 +D 13 +U 10 +R 5 +U 5 +L 6 +R 7 +D 5 +L 1 +R 5 +U 6 +D 13 +U 4 +L 10 +U 6 +L 3 +U 7 +R 6 +U 4 +L 11 +U 7 +L 6 +R 13 +U 10 +R 11 +D 11 +U 9 +D 2 +U 4 +R 9 +L 11 +R 7 +U 1 +L 5 +U 8 +D 5 +L 12 +U 3 +D 7 +L 2 +R 6 +L 4 +D 12 +U 5 +R 12 +L 13 +D 6 +U 3 +L 11 +R 4 +L 3 +R 8 +U 12 +D 11 +U 3 +R 10 +U 12 +L 7 +D 10 +R 1 +U 5 +L 1 +U 13 +D 12 +U 1 +L 2 +R 12 +D 13 +R 2 +D 6 +L 12 +U 10 +R 14 +U 14 +R 2 +D 4 +L 10 +R 7 +U 14 +L 5 +D 7 +L 12 +R 2 +D 9 +R 8 +D 2 +R 4 +U 5 +L 9 +R 13 +L 14 +R 1 +U 8 +R 12 +U 10 +D 2 +R 5 +U 8 +D 4 +U 9 +D 3 +R 5 +D 7 +L 8 +R 11 +D 2 +U 11 +L 4 +R 2 +U 2 +D 10 +U 14 +L 3 +R 3 +D 3 +R 14 +L 2 +R 6 +D 9 +U 1 +L 14 +R 9 +L 7 +R 10 +U 7 +L 14 +R 11 +L 11 +D 10 +R 11 +U 13 +L 2 +D 7 +L 4 +D 10 +L 10 +R 12 +D 7 +R 14 +L 13 +D 8 +R 5 +L 12 +D 6 +R 5 +D 3 +U 6 +L 10 +D 6 +R 8 +U 9 +R 4 +D 7 +R 6 +D 12 +R 5 +D 6 +L 14 +U 12 +L 10 +U 14 +D 12 +L 12 +R 2 +U 14 +R 14 +D 11 +R 14 +U 12 +D 2 +U 10 +R 4 +U 7 +D 9 +U 10 +D 12 +U 8 +D 10 +L 3 +R 8 +L 5 +D 2 +R 6 +L 1 +D 8 +U 3 +L 4 +U 3 +R 5 +L 10 +D 10 +U 14 +D 2 +U 3 +R 13 +L 7 +R 12 +L 10 +R 14 +D 4 +L 10 +R 3 +U 14 +L 2 +D 15 +R 14 +D 2 +R 14 +L 12 +D 10 +R 3 +D 2 +L 3 +R 3 +D 5 +L 2 +R 1 +L 5 +D 14 +L 8 +R 10 +L 14 +D 8 +L 8 +D 8 +R 15 +D 12 +U 7 +D 13 +L 13 +U 4 +L 7 +U 13 +R 7 +U 12 +R 1 +D 7 +R 5 +L 10 +R 11 +L 15 +D 13 +L 8 +D 12 +U 15 +L 11 +R 10 +U 13 +R 12 +U 6 +R 11 +D 13 +R 8 +D 15 +L 2 +D 5 +U 11 +R 5 +L 13 +D 4 +R 15 +D 13 +R 10 +L 10 +U 1 +R 11 +U 3 +R 5 +D 11 +U 5 +R 6 +U 6 +D 14 +L 2 +R 14 +U 2 +R 1 +L 11 +U 15 +R 2 +D 10 +L 5 +D 3 +U 4 +D 9 +U 2 +L 13 +R 2 +D 7 +R 15 +D 1 +U 9 +R 15 +L 5 +D 4 +L 10 +D 16 +U 8 +R 11 +L 12 +U 5 +L 16 +R 1 +D 10 +R 11 +L 16 +D 4 +U 8 +D 7 +U 13 +D 3 +R 5 +U 9 +R 6 +U 12 +D 4 +U 15 +L 5 +U 15 +L 6 +U 12 +R 8 +L 3 +R 2 +U 3 +L 3 +R 10 +L 11 +U 6 +D 11 +L 4 +R 6 +D 8 +U 14 +L 5 +D 13 +R 13 +D 9 +L 10 +D 16 +R 14 +L 6 +D 7 +U 2 +L 11 +D 14 +R 4 +U 6 +R 7 +L 13 +U 6 +L 8 +D 13 +R 4 +U 13 +L 15 +U 16 +L 8 +D 14 +L 3 +R 7 +D 3 +U 9 +D 7 +U 12 +R 4 +D 3 +U 11 +D 7 +L 9 +U 6 +L 5 +U 12 +D 6 +R 5 +D 9 +U 14 +D 9 +R 6 +U 16 +R 11 +U 16 +L 15 +R 15 +U 10 +L 13 +D 12 +R 4 +D 5 +L 5 +U 1 +D 11 +R 10 +U 7 +R 13 +U 6 +L 6 +D 5 +R 13 +U 13 +D 3 +U 11 +L 4 +R 5 +U 4 +D 5 +L 17 +R 2 +L 12 +R 10 +L 17 +U 1 +R 11 +D 12 +L 10 +U 8 +L 15 +R 8 +U 9 +L 17 +D 13 +L 5 +R 7 +L 1 +D 8 +R 6 +D 1 +U 3 +D 10 +R 6 +L 6 +U 15 +R 1 +U 17 +L 17 +R 4 +U 4 +R 10 +U 12 +L 5 +D 12 +R 14 +D 17 +R 1 +U 1 +R 9 +U 2 +D 4 +R 17 +L 9 +D 5 +U 2 +L 7 +D 8 +R 11 +U 12 +D 13 +R 16 +L 15 +D 15 +L 2 +R 10 +D 16 +R 13 +D 2 +R 6 +D 16 +L 8 +D 2 +L 10 +U 7 +L 14 +R 16 +L 5 +D 5 +R 10 +L 2 +U 13 +R 10 +L 9 +U 1 +L 10 +R 10 +U 14 +D 6 +R 11 +D 4 +R 12 +D 4 +L 1 +D 14 +L 2 +U 3 +L 15 +U 9 +D 12 +R 13 +D 14 +R 5 +L 6 +D 14 +R 14 +L 16 +R 7 +U 7 +L 14 +R 11 +U 9 +D 11 +U 9 +L 10 +R 13 +L 4 +R 12 +U 15 +R 9 +D 10 +U 3 +R 7 +U 1 +R 6 +D 17 +U 16 +D 4 +R 12 +U 3 +R 18 +D 17 +L 8 +U 11 +D 6 +L 9 +R 17 +L 14 +D 1 +L 2 +D 6 +U 13 +L 3 +R 18 +D 4 +L 13 +U 7 +D 6 +U 11 +L 11 +U 8 +R 10 +L 15 +U 4 +D 6 +R 18 +U 17 +R 16 +D 11 +U 5 +R 16 +L 5 +D 16 +U 1 +R 9 +L 10 +U 7 +R 17 +U 8 +L 7 +R 14 +L 11 +R 9 +D 8 +R 9 +U 1 +R 14 +L 15 +U 6 +L 4 +R 3 +L 15 +U 15 +D 17 +U 12 +D 14 +R 13 +U 11 +D 10 +U 16 +L 8 +R 11 +U 6 +D 11 +U 9 +R 15 +L 12 +U 6 +L 13 +U 12 +R 3 +U 16 +L 2 +U 15 +L 15 +R 4 +D 5 +R 8 +D 9 +L 8 +U 7 +R 2 +D 10 +L 12 +R 1 +U 11 +R 17 +U 18 +D 6 +L 12 +U 2 +R 2 +U 14 +D 17 +L 7 +R 12 +U 13 +D 18 +L 8 +R 4 +U 10 +R 10 +L 8 +U 4 +L 1 +U 15 +L 6 +D 6 +L 10 +R 12 +D 2 +R 10 +U 16 +L 12 +D 1 +R 11 +D 10 +U 19 +R 7 +D 18 +U 1 +D 7 +R 3 +U 19 +R 12 +U 5 +L 11 +U 8 +D 12 +R 2 +D 16 +U 14 +R 14 +D 1 +U 17 +L 15 +D 8 +L 18 +D 2 +L 14 +U 10 +L 17 +D 2 +U 14 +L 17 +U 15 +R 18 +L 11 +R 15 +U 4 +L 8 +D 10 +L 17 +U 13 +R 1 +L 10 +U 16 +R 9 +L 4 +D 13 +R 13 +U 10 +R 12 +L 14 +U 10 +D 5 +R 18 +L 8 +D 8 +R 5 +D 19 +U 10 +R 8 +U 12 +R 12 +D 6 +U 7 +L 2 +U 5 +L 6 +R 1 +D 16 +R 16 +U 15 +R 2 +D 15 +R 2 +D 10 +L 4 +D 8 +R 17 +D 6 +R 7 +U 10 +R 8 +D 16 +R 3 +D 17 +R 11 +D 18 +L 3 +R 11 +D 8 +R 14 +D 7 +U 14 +R 12 +L 2 +R 18 +L 6 +R 2 +D 3 +R 18 \ No newline at end of file