From 94e9159f8e4a7006b766cbbbd39c73605ec35898 Mon Sep 17 00:00:00 2001 From: Eveldee Date: Fri, 9 Dec 2022 15:28:31 +0100 Subject: [PATCH] Add day 9 --- Days/Day9.cs | 2143 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 2143 insertions(+) create mode 100644 Days/Day9.cs diff --git a/Days/Day9.cs b/Days/Day9.cs new file mode 100644 index 0000000..81f8523 --- /dev/null +++ b/Days/Day9.cs @@ -0,0 +1,2143 @@ +using Spectre.Console; + +namespace AdventOfCode.Days; + +public class Day9 : Day +{ + public override int Number => 9; + public override string Name => "Rope Bridge"; + + public override void RunPart1() + { + // Start + (int x, int y) start = (0, 0); + var headPosition = start; + var tailPosition = start; + + var tailVisitedPositions = new HashSet<(int x, int y)> { tailPosition }; + + // Do head movements + foreach (var line in Input.ReadAllLines()) + { + var split = line.Split(' '); + var direction = split[0]; + var count = int.Parse(split[1]); + + // Do the movement in direction 'count' times + for (int i = 0; i < count; i++) + { + var oldHeadPosition = headPosition; + + // Move the head + headPosition = direction switch + { + "U" => (headPosition.x, headPosition.y + 1), + "D" => (headPosition.x, headPosition.y - 1), + "R" => (headPosition.x + 1, headPosition.y), + "L" => (headPosition.x - 1, headPosition.y), + _ => throw new ArgumentOutOfRangeException(nameof(direction)) + }; + + // Check if the tail is too far away + if (Math.Abs(tailPosition.x - headPosition.x) >= 2 + || Math.Abs(tailPosition.y - headPosition.y) >= 2) + { + // Move the tail + tailPosition = oldHeadPosition; + tailVisitedPositions.Add(tailPosition); + } + } + } + + AnsiConsole.MarkupLine($"[green]The tail visited [yellow]{tailVisitedPositions.Count}[/] unique positions[/]"); + } + + public override void RunPart2() + { + const int tailSegments = 9; + + // Start + (int x, int y) start = (0, 0); + var headPosition = start; + var tailPositions = Enumerable.Repeat(start, tailSegments).ToArray(); + + var tailVisitedPositions = new HashSet<(int x, int y)> { start }; + + // Do head movements + foreach (var line in Input.ReadAllLines()) + { + var split = line.Split(' '); + var direction = split[0]; + var count = int.Parse(split[1]); + + // Do the movement in direction 'count' times + for (int i = 0; i < count; i++) + { + // Move the head + headPosition = direction switch + { + "U" => (headPosition.x, headPosition.y + 1), + "D" => (headPosition.x, headPosition.y - 1), + "R" => (headPosition.x + 1, headPosition.y), + "L" => (headPosition.x - 1, headPosition.y), + _ => throw new ArgumentOutOfRangeException(nameof(direction)) + }; + + // Move each segment of the tail if needed + for (int tail = 0; tail < tailSegments; tail++) + { + // Check if the tail is too far away from previous segment + var tailPosition = tailPositions[tail]; + var previousTailPosition = tail > 0 ? tailPositions[tail - 1] : headPosition; + var dx = previousTailPosition.x - tailPosition.x; + var dy = previousTailPosition.y - tailPosition.y; + + // Don't move the tail if it's still next to previous tail + if ((Math.Abs(dx), Math.Abs(dy)) is not ((>= 2, _) or (_, >= 2))) + { + continue; + } + + // Move the tail segment + tailPositions[tail] = (dx, dy) switch + { + // Top right + (>= 2, >= 1) or (>= 1, >= 2) => (tailPosition.x + 1, tailPosition.y + 1), + // Top left + (<= -2, >= 1) or (<= -1, >= 2) => (tailPosition.x - 1, tailPosition.y + 1), + // Bottom right + (>= 2, <= -1) or (>= 1, <= -2) => (tailPosition.x + 1, tailPosition.y - 1), + // Bottom left + (<= -2, <= -1) or (<= -1, <= -2) => (tailPosition.x - 1, tailPosition.y - 1), + // Top + (_, >= 2) => (tailPosition.x, tailPosition.y + 1), + // Bottom + (_, <= -2) => (tailPosition.x, tailPosition.y -1), + // Right + (>= 2, _) => (tailPosition.x + 1, tailPosition.y), + // Left + (<= -2, _) => (tailPosition.x - 1, tailPosition.y), + // Impossible to get there + _ => throw new Exception("How did you get there") + }; + + // Visit positions for the tail end (9) + if (tail == tailSegments - 1) + { + tailVisitedPositions.Add(tailPositions[tail]); + } + } + } + } + + AnsiConsole.MarkupLine($"[green]The tail visited [yellow]{tailVisitedPositions.Count}[/] unique positions[/]"); + } + + #region Input + + public const string Input = + """ + L 1 + D 2 + U 1 + L 1 + R 2 + L 2 + U 1 + D 2 + R 2 + L 2 + U 1 + D 2 + R 1 + D 2 + L 2 + D 1 + L 2 + R 1 + U 2 + R 2 + U 2 + L 2 + U 1 + L 2 + R 1 + D 1 + R 1 + L 1 + R 1 + L 1 + R 1 + U 1 + R 1 + L 1 + D 2 + L 2 + D 2 + L 1 + R 1 + D 1 + R 1 + D 2 + L 1 + D 2 + L 1 + R 2 + D 2 + R 2 + U 1 + R 1 + U 2 + R 1 + U 2 + R 1 + D 2 + L 1 + D 2 + U 1 + R 2 + D 2 + L 1 + U 2 + R 2 + L 2 + D 2 + L 2 + D 2 + R 1 + U 2 + L 2 + U 1 + R 1 + D 1 + L 1 + D 1 + U 1 + D 2 + L 1 + R 1 + D 1 + R 1 + L 2 + R 1 + L 1 + U 2 + D 2 + U 1 + L 1 + U 2 + R 1 + D 2 + U 1 + D 1 + L 1 + D 2 + U 2 + D 1 + U 2 + R 2 + L 2 + D 1 + R 2 + D 1 + L 2 + D 2 + L 2 + R 1 + L 1 + R 2 + L 2 + R 2 + U 1 + R 1 + U 3 + D 2 + U 3 + L 1 + R 1 + U 3 + D 1 + L 1 + R 3 + D 2 + L 3 + R 3 + D 2 + R 2 + U 3 + R 3 + U 3 + R 2 + U 3 + D 2 + L 3 + U 3 + R 1 + U 1 + R 3 + U 2 + L 1 + R 1 + U 1 + L 3 + R 3 + U 3 + D 2 + U 1 + L 1 + D 3 + R 3 + U 2 + L 1 + R 3 + L 3 + D 3 + U 3 + R 2 + L 1 + U 1 + L 3 + R 3 + U 1 + R 3 + L 2 + R 2 + D 3 + U 1 + D 3 + U 3 + R 3 + D 2 + L 2 + U 2 + D 3 + L 3 + U 3 + R 3 + D 2 + R 3 + U 1 + D 1 + U 2 + R 1 + D 3 + R 1 + L 2 + U 3 + D 1 + L 1 + D 3 + U 2 + L 3 + R 3 + L 1 + D 2 + L 3 + U 3 + L 1 + D 2 + L 1 + D 1 + L 2 + U 2 + D 2 + U 2 + L 2 + D 3 + L 3 + D 3 + R 3 + U 1 + R 3 + U 1 + R 3 + D 3 + U 2 + D 1 + R 2 + L 2 + R 2 + D 2 + R 2 + D 1 + R 3 + D 1 + U 2 + L 4 + D 1 + L 2 + R 1 + U 1 + D 3 + U 4 + D 2 + L 3 + R 2 + D 3 + R 4 + U 1 + D 1 + U 1 + L 3 + U 1 + D 3 + R 3 + D 3 + R 1 + U 4 + R 1 + U 1 + R 2 + L 4 + U 3 + D 2 + R 2 + D 1 + U 2 + L 3 + D 4 + U 4 + D 4 + U 4 + L 3 + U 3 + D 3 + R 3 + L 4 + R 3 + D 2 + L 2 + R 1 + D 1 + L 4 + R 3 + D 2 + U 1 + L 2 + R 1 + U 2 + L 4 + R 4 + L 3 + U 4 + D 2 + U 4 + D 4 + L 1 + U 4 + L 3 + U 2 + D 2 + R 2 + D 3 + R 4 + D 1 + U 4 + D 1 + U 1 + D 3 + L 3 + D 2 + R 4 + D 4 + L 2 + U 2 + L 3 + R 4 + L 2 + R 2 + D 3 + L 2 + D 4 + U 3 + D 4 + L 3 + R 2 + U 3 + D 4 + R 2 + U 3 + R 1 + D 1 + R 1 + D 2 + R 3 + D 4 + L 1 + U 3 + L 3 + U 4 + R 1 + U 3 + L 4 + D 5 + R 2 + D 2 + U 2 + D 1 + R 4 + D 1 + L 4 + D 4 + L 1 + R 1 + D 4 + U 4 + L 1 + D 4 + L 4 + U 5 + R 4 + D 4 + R 5 + U 3 + L 5 + U 1 + R 4 + L 1 + R 3 + L 2 + D 5 + R 1 + D 4 + R 2 + U 5 + L 3 + R 5 + U 4 + R 1 + D 4 + U 3 + R 3 + L 3 + R 3 + L 3 + U 2 + D 4 + U 2 + L 3 + D 2 + R 3 + U 3 + D 2 + U 1 + R 5 + L 4 + R 4 + L 4 + D 3 + R 3 + U 2 + R 1 + D 3 + U 3 + D 2 + L 1 + D 2 + U 1 + L 3 + U 5 + L 1 + D 1 + U 5 + D 3 + U 4 + D 4 + L 5 + R 3 + D 4 + R 2 + L 1 + D 1 + L 3 + U 3 + R 1 + L 2 + D 4 + L 5 + U 1 + L 4 + R 4 + U 2 + D 1 + R 5 + D 3 + U 2 + D 3 + U 4 + D 4 + U 1 + L 2 + D 4 + L 3 + U 4 + L 1 + R 1 + L 2 + R 3 + L 2 + U 1 + D 2 + U 5 + R 2 + D 4 + U 1 + D 4 + U 4 + D 5 + L 6 + D 3 + U 2 + D 1 + L 3 + U 4 + R 4 + D 4 + R 3 + L 4 + U 6 + D 1 + U 4 + R 2 + L 1 + D 2 + U 4 + D 5 + U 3 + D 6 + L 1 + U 3 + L 1 + U 1 + D 6 + L 3 + U 6 + L 3 + D 6 + L 1 + D 6 + U 2 + D 5 + U 2 + L 5 + D 3 + U 2 + D 1 + U 6 + L 1 + D 4 + L 6 + R 3 + D 3 + L 3 + D 2 + R 3 + D 5 + R 3 + D 2 + L 1 + R 4 + L 6 + D 4 + R 4 + U 1 + R 6 + D 3 + U 1 + R 1 + D 1 + L 3 + D 1 + R 3 + U 5 + L 5 + D 2 + L 3 + D 2 + L 5 + U 3 + L 1 + U 5 + L 3 + D 4 + U 5 + D 1 + L 6 + D 1 + R 6 + U 4 + R 1 + D 1 + L 2 + U 5 + R 2 + U 6 + L 5 + U 5 + L 6 + U 6 + D 3 + L 1 + R 3 + L 3 + U 4 + R 5 + L 6 + D 5 + L 4 + R 6 + L 6 + R 5 + D 2 + R 4 + L 2 + U 1 + L 3 + U 6 + L 4 + D 6 + U 6 + D 4 + L 2 + R 7 + U 4 + R 1 + L 5 + D 2 + R 3 + U 4 + L 5 + U 7 + L 2 + R 1 + U 4 + L 2 + R 5 + L 6 + D 5 + L 4 + U 5 + L 7 + U 1 + L 5 + U 1 + L 5 + D 3 + U 3 + R 7 + U 7 + R 7 + L 6 + D 4 + U 7 + R 2 + D 3 + R 3 + U 4 + D 4 + U 5 + D 6 + L 5 + R 6 + U 4 + R 6 + D 1 + R 4 + U 1 + D 1 + R 1 + L 4 + U 5 + L 3 + D 5 + L 5 + D 3 + U 2 + R 5 + D 7 + U 7 + D 1 + U 5 + R 6 + U 4 + R 6 + L 7 + U 5 + R 1 + L 1 + U 1 + R 1 + D 7 + L 2 + U 5 + R 4 + U 2 + D 6 + U 6 + L 7 + U 3 + D 2 + L 3 + R 3 + U 2 + L 1 + R 2 + L 5 + D 6 + R 2 + U 6 + L 1 + D 7 + R 4 + D 3 + L 2 + U 5 + R 4 + L 2 + R 5 + D 1 + U 1 + R 6 + D 5 + U 6 + R 2 + U 2 + L 2 + U 6 + L 5 + U 1 + L 1 + D 7 + R 6 + U 5 + D 3 + L 5 + R 3 + D 3 + U 2 + D 7 + U 7 + L 1 + D 5 + L 5 + U 4 + L 5 + D 1 + U 6 + D 5 + L 7 + D 8 + U 8 + R 6 + U 5 + D 8 + U 1 + R 2 + U 6 + D 6 + L 4 + D 2 + R 3 + U 7 + R 4 + U 4 + R 5 + U 6 + R 1 + U 4 + R 1 + U 4 + D 5 + U 3 + L 7 + U 8 + R 1 + D 1 + U 8 + L 8 + U 3 + L 1 + D 4 + R 2 + D 4 + U 2 + L 4 + D 8 + R 7 + D 5 + U 4 + L 5 + U 5 + D 8 + R 8 + U 3 + R 8 + L 4 + U 5 + R 6 + U 7 + D 3 + L 1 + U 5 + D 2 + R 5 + U 4 + D 8 + L 4 + R 1 + D 6 + R 1 + L 6 + D 6 + L 7 + D 4 + L 4 + D 8 + R 8 + D 7 + L 6 + R 1 + D 4 + L 5 + D 2 + U 3 + D 2 + U 6 + R 1 + U 7 + D 7 + R 2 + U 7 + D 5 + L 6 + U 1 + L 8 + U 1 + L 1 + R 9 + D 1 + U 6 + D 5 + L 1 + R 9 + D 2 + L 2 + D 6 + U 6 + D 7 + L 3 + R 5 + L 6 + U 5 + R 1 + U 1 + R 3 + L 9 + U 6 + L 6 + U 2 + D 6 + R 9 + U 4 + D 3 + L 8 + U 5 + D 7 + L 1 + U 7 + R 1 + L 6 + D 8 + L 5 + R 7 + L 2 + R 6 + L 5 + D 3 + L 8 + D 7 + U 8 + R 6 + L 6 + D 7 + U 8 + D 1 + U 2 + D 5 + U 7 + D 8 + L 1 + D 1 + L 1 + U 1 + R 3 + L 5 + R 9 + D 2 + L 8 + R 6 + D 6 + U 1 + R 7 + L 4 + U 4 + D 1 + L 5 + U 2 + R 9 + D 7 + U 8 + L 8 + R 4 + D 1 + L 1 + U 7 + R 8 + L 3 + D 2 + U 8 + R 1 + D 5 + L 1 + R 7 + D 6 + R 2 + U 9 + D 2 + L 5 + U 4 + D 9 + L 7 + D 9 + L 2 + U 9 + D 5 + L 7 + D 6 + U 5 + D 9 + R 3 + U 8 + L 7 + U 1 + L 3 + U 3 + D 1 + L 6 + R 9 + U 2 + L 7 + R 9 + U 5 + R 2 + L 3 + R 4 + D 9 + L 4 + R 9 + U 4 + L 10 + R 9 + D 9 + U 10 + L 2 + R 4 + U 4 + R 9 + D 2 + R 1 + L 4 + R 7 + D 3 + L 6 + U 1 + L 9 + D 6 + U 10 + D 1 + R 10 + D 9 + L 6 + D 10 + U 3 + R 10 + L 8 + U 9 + D 1 + L 1 + D 10 + L 1 + D 5 + L 9 + U 3 + L 4 + U 4 + D 1 + U 3 + R 7 + L 3 + R 3 + L 3 + R 8 + D 9 + R 4 + L 6 + D 7 + R 10 + U 6 + R 2 + D 2 + L 3 + R 9 + D 9 + U 7 + D 2 + R 6 + U 10 + R 8 + U 5 + R 5 + U 10 + R 6 + U 7 + L 7 + U 7 + D 4 + L 9 + U 2 + R 7 + L 8 + R 4 + L 1 + U 9 + R 8 + D 4 + R 5 + D 4 + L 1 + D 10 + R 8 + D 10 + U 9 + D 3 + R 1 + U 10 + R 1 + D 10 + R 1 + L 6 + D 3 + U 8 + R 4 + U 9 + D 8 + U 3 + D 2 + R 3 + L 5 + U 4 + L 3 + R 4 + D 6 + L 9 + R 1 + D 9 + R 2 + D 11 + R 8 + D 5 + R 8 + L 2 + D 2 + L 7 + U 11 + D 10 + L 6 + R 2 + U 9 + L 10 + D 4 + L 5 + R 7 + D 4 + L 1 + U 3 + L 9 + D 7 + R 4 + D 10 + L 5 + U 9 + L 10 + D 5 + L 11 + R 11 + U 8 + R 11 + U 2 + R 7 + L 10 + R 2 + D 8 + L 2 + D 8 + R 11 + L 6 + R 3 + L 2 + U 2 + R 2 + U 3 + D 3 + U 5 + L 8 + U 9 + R 10 + D 1 + U 4 + D 8 + R 3 + D 11 + R 4 + D 4 + R 7 + U 6 + L 11 + U 11 + D 8 + L 5 + R 2 + L 11 + U 7 + D 5 + U 5 + D 9 + L 2 + U 3 + R 10 + U 1 + R 1 + L 11 + D 3 + L 5 + R 2 + L 10 + R 4 + L 1 + U 1 + L 4 + R 5 + U 2 + D 6 + R 11 + U 8 + D 5 + R 5 + D 3 + L 2 + U 7 + D 10 + L 11 + D 10 + U 11 + R 8 + L 2 + D 9 + R 9 + L 11 + R 10 + U 3 + R 4 + L 5 + R 12 + U 5 + D 5 + L 6 + D 11 + R 8 + D 12 + U 6 + L 10 + R 9 + U 1 + L 12 + D 1 + R 8 + U 9 + D 9 + R 6 + D 3 + L 1 + R 3 + L 8 + R 6 + U 12 + L 1 + U 8 + D 7 + U 5 + D 12 + L 4 + R 11 + U 9 + D 12 + R 8 + D 2 + R 7 + U 8 + R 10 + U 3 + R 4 + D 4 + U 9 + R 7 + L 9 + R 7 + U 8 + L 9 + U 6 + R 4 + L 11 + D 11 + R 6 + U 2 + D 1 + R 2 + L 2 + D 11 + R 5 + U 1 + R 1 + D 3 + U 2 + L 3 + U 12 + R 10 + U 12 + R 9 + D 11 + U 9 + L 2 + R 7 + U 5 + R 7 + U 9 + R 3 + D 4 + L 9 + D 4 + R 12 + L 3 + U 12 + L 9 + U 3 + L 11 + R 7 + U 11 + D 2 + L 11 + R 2 + L 12 + U 10 + L 6 + R 8 + D 6 + R 12 + L 7 + R 4 + U 5 + D 10 + R 8 + L 11 + D 4 + U 1 + R 9 + U 12 + D 3 + L 10 + R 11 + U 1 + L 5 + U 11 + L 7 + U 1 + D 13 + U 10 + L 12 + U 9 + D 8 + L 5 + R 4 + L 1 + R 2 + L 7 + D 1 + L 11 + U 9 + R 5 + D 12 + L 4 + U 7 + L 6 + R 7 + U 1 + L 7 + U 2 + D 4 + R 4 + D 7 + L 3 + D 9 + U 3 + D 3 + U 12 + R 2 + L 12 + R 9 + L 8 + D 10 + U 1 + R 11 + L 13 + U 1 + D 3 + U 12 + L 3 + R 7 + L 7 + D 7 + U 7 + D 7 + U 10 + D 1 + L 7 + D 11 + R 3 + D 6 + R 9 + D 5 + U 12 + D 6 + R 8 + D 3 + R 7 + L 6 + D 10 + U 8 + R 9 + D 4 + R 9 + D 2 + U 4 + R 4 + U 7 + L 12 + R 2 + D 10 + U 13 + R 12 + L 12 + D 1 + R 11 + L 2 + U 13 + L 12 + D 7 + L 2 + U 4 + L 4 + D 8 + L 9 + R 3 + D 4 + L 9 + U 9 + L 9 + R 10 + L 4 + R 4 + U 10 + L 11 + D 8 + U 8 + L 13 + R 1 + L 8 + U 13 + L 9 + U 1 + R 13 + U 7 + L 3 + R 8 + L 1 + D 5 + R 7 + U 8 + D 5 + L 12 + R 11 + U 11 + D 10 + U 5 + R 6 + D 11 + R 1 + D 1 + R 9 + L 8 + D 4 + L 11 + U 9 + D 4 + U 3 + D 13 + U 13 + L 6 + D 6 + R 11 + L 9 + U 3 + R 7 + D 9 + R 5 + L 9 + D 14 + R 8 + L 14 + R 6 + L 6 + U 6 + R 7 + L 11 + R 1 + L 6 + D 10 + R 1 + D 14 + R 12 + U 4 + R 2 + L 9 + R 14 + L 3 + D 9 + U 10 + R 11 + L 5 + R 14 + U 3 + D 8 + R 9 + L 13 + U 4 + L 2 + R 4 + D 6 + L 13 + D 4 + R 2 + L 2 + D 10 + L 10 + R 4 + D 2 + R 2 + U 6 + D 7 + U 12 + R 5 + U 13 + L 6 + U 12 + L 3 + D 11 + R 3 + L 7 + U 11 + D 4 + L 13 + U 14 + R 10 + D 12 + U 2 + L 1 + U 12 + D 6 + U 2 + R 12 + L 3 + D 9 + U 9 + R 14 + L 12 + R 5 + L 11 + R 11 + L 5 + R 2 + L 4 + D 8 + U 3 + R 4 + D 12 + R 10 + L 10 + D 10 + U 10 + R 9 + L 14 + R 3 + L 1 + D 1 + R 15 + D 15 + R 12 + L 15 + D 12 + L 10 + R 3 + U 14 + D 4 + U 7 + R 11 + L 10 + U 4 + D 15 + L 3 + U 1 + R 2 + L 15 + U 6 + L 6 + D 3 + L 14 + D 12 + U 1 + L 15 + R 13 + U 7 + D 6 + R 11 + U 7 + L 2 + D 11 + L 1 + R 7 + D 1 + L 4 + R 11 + U 5 + L 4 + R 13 + U 1 + D 4 + L 6 + R 10 + L 15 + U 7 + D 9 + L 10 + R 8 + U 10 + D 8 + L 14 + D 15 + R 14 + U 10 + D 4 + U 6 + D 2 + R 6 + L 6 + D 4 + U 12 + L 3 + R 6 + U 9 + R 3 + U 11 + R 3 + U 15 + D 1 + U 2 + D 3 + U 11 + L 3 + U 2 + L 14 + D 3 + R 9 + D 5 + L 10 + U 7 + L 6 + D 8 + L 8 + U 8 + L 14 + R 9 + L 14 + U 10 + L 8 + U 5 + L 2 + U 4 + D 5 + R 2 + L 1 + U 14 + R 3 + L 4 + U 9 + D 7 + U 14 + D 11 + R 9 + U 5 + R 8 + L 5 + U 3 + D 8 + R 8 + L 11 + R 7 + L 3 + D 16 + L 11 + U 7 + D 6 + R 5 + L 4 + U 9 + L 12 + R 9 + L 10 + D 13 + L 3 + D 13 + U 6 + R 14 + U 2 + L 5 + R 4 + L 15 + U 9 + D 5 + L 6 + R 7 + U 10 + L 3 + D 5 + U 8 + D 12 + L 11 + U 14 + D 12 + U 2 + D 9 + U 11 + D 5 + L 5 + R 10 + L 14 + U 1 + R 8 + D 5 + R 6 + U 6 + L 3 + U 11 + L 8 + R 3 + U 5 + L 1 + R 16 + D 10 + U 12 + R 11 + D 2 + U 4 + D 15 + U 16 + D 2 + L 9 + R 10 + L 3 + U 8 + R 13 + U 11 + D 12 + U 15 + D 1 + L 14 + R 3 + U 13 + D 7 + R 15 + L 3 + R 1 + U 7 + R 6 + D 12 + L 2 + R 13 + D 3 + R 6 + D 10 + U 2 + R 4 + D 12 + L 7 + R 7 + L 8 + R 14 + L 15 + D 8 + L 6 + U 14 + L 16 + U 10 + D 7 + R 6 + D 12 + R 16 + U 11 + R 2 + U 10 + L 1 + R 6 + U 14 + D 13 + U 7 + L 10 + D 4 + L 7 + R 11 + U 17 + D 6 + U 6 + R 6 + U 12 + L 16 + U 5 + R 15 + L 17 + D 13 + U 12 + L 1 + D 7 + L 13 + R 7 + U 2 + L 5 + U 12 + R 10 + U 7 + R 11 + U 17 + D 15 + U 15 + L 10 + D 3 + L 15 + U 8 + R 8 + D 10 + L 9 + U 6 + R 9 + L 1 + U 5 + R 6 + L 11 + D 17 + L 7 + U 3 + D 17 + R 17 + U 8 + L 15 + R 3 + D 2 + U 17 + L 1 + R 13 + U 13 + L 10 + R 2 + D 12 + L 12 + R 13 + L 14 + R 16 + D 12 + R 4 + U 14 + L 15 + R 10 + D 7 + R 12 + U 6 + L 8 + U 7 + R 1 + D 3 + R 3 + L 11 + D 2 + R 15 + U 17 + L 13 + U 17 + D 4 + U 11 + L 17 + D 12 + R 3 + L 12 + U 8 + D 2 + L 14 + U 16 + D 6 + U 7 + L 12 + R 17 + L 7 + D 1 + L 16 + D 16 + R 17 + D 5 + U 16 + D 2 + L 13 + U 9 + D 13 + R 3 + U 1 + D 12 + R 4 + D 11 + L 8 + D 8 + R 13 + D 16 + R 1 + D 10 + R 18 + U 6 + D 4 + U 17 + R 12 + L 14 + U 5 + L 15 + U 18 + R 4 + D 17 + L 4 + R 18 + U 18 + D 4 + L 1 + U 4 + L 2 + U 17 + R 16 + L 7 + U 10 + R 11 + U 9 + R 11 + L 16 + U 3 + R 3 + L 18 + U 8 + R 1 + U 1 + L 5 + U 5 + D 7 + L 1 + R 2 + U 16 + R 17 + D 4 + U 16 + L 12 + R 3 + L 16 + D 5 + U 5 + R 18 + L 7 + U 1 + L 7 + U 16 + R 14 + L 4 + R 13 + L 3 + U 4 + L 11 + U 3 + L 12 + U 16 + L 14 + U 3 + L 9 + R 18 + D 8 + L 15 + R 10 + D 2 + L 13 + D 11 + U 4 + L 13 + D 7 + L 12 + U 7 + D 17 + U 9 + D 5 + L 10 + R 2 + D 7 + L 14 + U 10 + D 17 + L 3 + R 17 + U 16 + D 13 + R 13 + U 14 + R 9 + L 3 + U 14 + L 7 + U 4 + D 1 + R 18 + U 11 + D 9 + U 8 + R 15 + L 5 + D 9 + L 2 + D 18 + U 12 + D 3 + U 14 + D 9 + U 13 + R 16 + U 8 + R 16 + U 4 + L 8 + D 14 + R 15 + D 6 + R 17 + U 6 + D 1 + L 2 + U 9 + D 15 + L 7 + D 3 + R 1 + L 1 + R 17 + D 12 + R 19 + U 4 + R 19 + L 2 + D 17 + U 11 + D 1 + L 9 + R 18 + L 7 + D 13 + U 6 + D 16 + L 6 + R 13 + U 12 + R 1 + L 2 + U 8 + L 16 + R 10 + D 15 + R 5 + L 1 + U 5 + R 18 + U 1 + R 4 + U 14 + R 3 + L 4 + U 13 + D 14 + L 10 + D 7 + U 3 + R 17 + L 19 + R 1 + D 12 + L 9 + U 19 + D 19 + L 5 + R 10 + L 14 + U 15 + D 19 + U 18 + D 14 + R 11 + U 8 + R 2 + U 16 + L 17 + D 6 + L 1 + D 10 + R 18 + U 5 + R 14 + U 10 + D 6 + L 17 + D 6 + U 7 + R 14 + L 1 + U 3 + D 3 + R 18 + D 1 + L 6 + D 18 + L 2 + R 10 + L 9 + R 10 + L 14 + R 15 + U 10 + """; + + #endregion +} \ No newline at end of file