From 974083b721ce80336703d6c7458fc921b13445fb Mon Sep 17 00:00:00 2001 From: Rob Stoffelen Date: Fri, 9 Dec 2022 14:28:25 +0100 Subject: [PATCH] Added day 9 --- Advend Of Code Runner/Program.cs | 17 +- .../2022/Day 09/Day09Part1.cs | 20 + .../2022/Day 09/Day09Part2.cs | 23 + .../2022/Day 09/RopeWalker.cs | 94 + .../2022/Day 09/day-09-input.txt | 2000 +++++++++++++++++ 5 files changed, 2147 insertions(+), 7 deletions(-) create mode 100644 Advent Of Code Library/2022/Day 09/Day09Part1.cs create mode 100644 Advent Of Code Library/2022/Day 09/Day09Part2.cs create mode 100644 Advent Of Code Library/2022/Day 09/RopeWalker.cs create mode 100644 Advent Of Code Library/2022/Day 09/day-09-input.txt diff --git a/Advend Of Code Runner/Program.cs b/Advend Of Code Runner/Program.cs index 56a4041..479de71 100644 --- a/Advend Of Code Runner/Program.cs +++ b/Advend Of Code Runner/Program.cs @@ -3,15 +3,18 @@ using AdventOfCodeLibrary._2022; using AdventOfCodeLibrary.Shared; -string _demoData = @"30373 -25512 -65332 -33549 -35390"; +string _demoData = @"R 4 +U 4 +L 3 +D 1 +R 4 +D 1 +L 5 +R 2"; -Answerable answerable = new Day08Part1(); +Answerable answerable = new Day09Part1(); byte[] dataArray = File.ReadAllBytes(answerable.DefaultInputFile); -//dataArray = Encoding.UTF8.GetBytes(_demoData); +dataArray = Encoding.UTF8.GetBytes(_demoData); Console.WriteLine($"Max value: {answerable.GetAnswer(dataArray)}"); Console.ReadKey(true); \ No newline at end of file diff --git a/Advent Of Code Library/2022/Day 09/Day09Part1.cs b/Advent Of Code Library/2022/Day 09/Day09Part1.cs new file mode 100644 index 0000000..eae0de9 --- /dev/null +++ b/Advent Of Code Library/2022/Day 09/Day09Part1.cs @@ -0,0 +1,20 @@ +namespace AdventOfCodeLibrary._2022 +{ + using AdventOfCodeLibrary._2022.Day_09; + using AdventOfCodeLibrary.Shared; + + public class Day09Part1 : Answerable + { + public override int Year { get; set; } = 2022; + public override int Day { get; set; } = 9; + public override int Part { get; set; } = 1; + + public override string GetAnswer(byte[] data) + { + string[] movements = GetAsStringArray(data); + RopeWalker walker = new(); + + return walker.ProcessMovement(movements).ToString(); + } + } +} diff --git a/Advent Of Code Library/2022/Day 09/Day09Part2.cs b/Advent Of Code Library/2022/Day 09/Day09Part2.cs new file mode 100644 index 0000000..f3f07db --- /dev/null +++ b/Advent Of Code Library/2022/Day 09/Day09Part2.cs @@ -0,0 +1,23 @@ +namespace AdventOfCodeLibrary._2022 +{ + using AdventOfCodeLibrary.Shared; + + public class Day09Part2 : Answerable + { + public override int Year { get; set; } = 2022; + public override int Day { get; set; } = 9; + public override int Part { get; set; } = 2; + + public override string GetAnswer(byte[] data) + { + int markerLength = 14; + for (int skip = 0; skip < data.Length - 1 - markerLength; skip++) + { + if (data.Skip(skip).Take(markerLength).Distinct().Count() == markerLength) + return (skip + markerLength).ToString(); + } + + return "nothing found"; + } + } +} diff --git a/Advent Of Code Library/2022/Day 09/RopeWalker.cs b/Advent Of Code Library/2022/Day 09/RopeWalker.cs new file mode 100644 index 0000000..bf638cb --- /dev/null +++ b/Advent Of Code Library/2022/Day 09/RopeWalker.cs @@ -0,0 +1,94 @@ +namespace AdventOfCodeLibrary._2022.Day_09 +{ + internal class VirtualPoint + { + internal int X { get; private set; } = 0; + + internal int Y { get; private set; } = 0; + + internal void MoveUp() + { + Y++; + } + + internal void MoveDown() + { + Y--; + } + + internal void MoveRight() + { + X++; + } + + internal void MoveLeft() + { + X--; + } + } + + internal class RopeWalker + { + private VirtualPoint HeadLocation = new(); + private VirtualPoint LastHeadLocation = new(); + + private VirtualPoint TailLocation = new(); + + private List TailVistedLocations = new(); + + internal int ProcessMovement(string[] movements) + { + // add the start position + TailVistedLocations.Add($"0,0"); + + for (int movementIndex = 0; movementIndex < movements.Length; movementIndex++) + { + char direction = movements[movementIndex][0]; + int amountToMove = Convert.ToInt32(movements[movementIndex].Substring(2)); + + for (int movement = 0; movement < amountToMove; movement++) + { + // set the last pos before moving + LastHeadLocation = HeadLocation; + + // do the actual move + switch (direction) + { + case 'U': HeadLocation.MoveUp(); break; + case 'D': HeadLocation.MoveDown(); break; + case 'R': HeadLocation.MoveRight(); break; + case 'L': HeadLocation.MoveLeft(); break; + } + + // check if the tail is touching + if (!IsTailTouchingHead(direction)) + { + // if not, move tail to last head position + TailLocation = LastHeadLocation; + + // add the new position to the list of visited positions + TailVistedLocations.Add($"{TailLocation.X},{TailLocation.Y}"); + } + } + } + + return TailVistedLocations.Distinct().Count(); + } + + private bool IsTailTouchingHead(char direction) + { + return direction switch + { + // up; Y + 1 + 'U' => TailLocation.Y + 1 >= HeadLocation.Y, + // down; Y - 1 + 'D' => TailLocation.Y - 1 <= HeadLocation.Y, + // right; X + 1 + 'R' => TailLocation.X + 1 >= HeadLocation.X, + // left; X - 1 + 'L' => TailLocation.X - 1 <= HeadLocation.X, + _ => throw new AccessViolationException(), + }; + } + } +} diff --git a/Advent Of Code Library/2022/Day 09/day-09-input.txt b/Advent Of Code Library/2022/Day 09/day-09-input.txt new file mode 100644 index 0000000..1ecc932 --- /dev/null +++ b/Advent Of Code Library/2022/Day 09/day-09-input.txt @@ -0,0 +1,2000 @@ +R 1 +L 1 +U 1 +L 2 +U 2 +D 2 +U 1 +R 1 +D 1 +R 2 +D 1 +U 1 +D 2 +R 2 +L 2 +R 2 +D 2 +R 2 +D 1 +L 2 +U 1 +R 2 +U 1 +L 1 +D 1 +R 1 +L 1 +D 2 +L 2 +U 1 +R 1 +L 2 +U 2 +D 2 +L 2 +R 1 +L 2 +U 2 +L 2 +D 2 +U 2 +D 1 +L 2 +D 1 +L 1 +D 2 +R 1 +D 1 +R 2 +D 2 +U 2 +D 2 +L 1 +R 1 +D 1 +L 1 +U 1 +L 2 +R 1 +U 2 +L 1 +D 2 +L 1 +D 2 +U 1 +L 1 +D 1 +R 2 +L 2 +R 2 +L 2 +D 1 +U 2 +L 1 +U 1 +R 2 +D 1 +R 2 +L 2 +D 1 +R 2 +U 1 +D 1 +L 2 +R 1 +U 1 +D 1 +L 2 +D 1 +L 2 +U 2 +R 1 +L 1 +D 2 +U 1 +D 1 +U 1 +R 2 +L 2 +R 2 +L 2 +U 2 +L 1 +U 1 +L 2 +R 2 +L 1 +U 1 +R 2 +U 1 +L 2 +D 1 +U 2 +D 1 +L 1 +U 3 +D 3 +L 1 +D 1 +L 2 +D 1 +R 2 +U 1 +D 3 +R 1 +U 1 +D 2 +U 3 +D 2 +U 2 +R 3 +D 3 +L 1 +R 2 +U 3 +D 2 +R 3 +U 1 +L 3 +U 2 +L 2 +U 3 +R 2 +D 3 +U 1 +R 1 +L 3 +R 2 +L 1 +U 3 +L 3 +U 3 +L 3 +R 2 +U 2 +R 2 +U 1 +R 2 +D 3 +U 2 +D 3 +R 2 +U 3 +D 3 +U 1 +R 2 +L 3 +D 1 +R 1 +D 1 +R 3 +D 3 +R 2 +D 2 +U 1 +R 1 +D 1 +U 1 +D 2 +U 3 +L 3 +R 1 +L 1 +R 1 +U 3 +R 3 +D 1 +R 2 +L 2 +R 2 +U 1 +L 3 +R 3 +U 1 +D 2 +U 3 +L 2 +D 2 +L 2 +U 1 +R 1 +U 1 +D 1 +L 2 +U 2 +D 3 +L 1 +D 1 +L 1 +D 3 +R 2 +L 3 +U 1 +R 1 +L 2 +D 2 +U 2 +R 2 +L 3 +D 2 +L 3 +D 1 +L 3 +D 4 +U 2 +L 3 +R 3 +U 1 +R 4 +L 3 +R 1 +U 3 +D 2 +L 3 +U 1 +R 2 +U 3 +R 3 +L 4 +D 2 +R 3 +D 3 +U 2 +D 4 +R 2 +D 3 +L 1 +R 2 +D 2 +U 1 +R 1 +L 2 +R 4 +U 3 +R 1 +U 1 +L 1 +R 4 +U 2 +L 1 +R 2 +L 3 +R 1 +D 3 +U 4 +L 3 +U 3 +L 4 +R 4 +U 4 +R 1 +L 1 +U 3 +D 4 +L 1 +U 1 +L 2 +D 3 +U 2 +L 4 +U 4 +D 3 +L 2 +D 2 +U 2 +D 2 +U 1 +L 3 +D 1 +L 1 +U 3 +R 3 +L 2 +R 1 +D 3 +R 4 +L 4 +U 3 +D 1 +R 4 +L 4 +R 4 +L 1 +D 3 +R 3 +U 3 +D 2 +R 4 +D 3 +L 2 +U 2 +R 3 +U 3 +L 1 +U 4 +L 4 +D 3 +R 2 +L 1 +R 2 +D 1 +L 1 +U 2 +L 3 +D 4 +R 3 +L 2 +D 3 +U 4 +D 2 +U 4 +R 2 +D 3 +L 4 +U 3 +L 5 +U 4 +R 2 +U 1 +L 2 +D 4 +U 2 +R 3 +L 3 +D 5 +L 4 +U 3 +L 1 +R 5 +U 4 +R 2 +U 1 +R 2 +U 2 +D 4 +U 3 +L 5 +D 1 +R 3 +D 5 +L 1 +R 5 +D 3 +L 2 +R 3 +L 3 +D 4 +L 5 +U 1 +R 1 +U 1 +L 1 +R 4 +L 5 +R 5 +D 1 +R 3 +D 2 +U 4 +R 2 +U 2 +L 1 +U 1 +D 3 +U 1 +D 3 +L 1 +R 1 +U 3 +L 2 +U 5 +R 1 +D 5 +R 5 +L 5 +U 1 +D 1 +U 3 +L 3 +D 2 +U 4 +L 4 +U 3 +R 1 +L 2 +D 1 +L 2 +D 2 +U 1 +R 3 +U 2 +L 4 +R 5 +L 3 +R 5 +U 4 +L 5 +D 3 +U 5 +L 5 +D 1 +R 5 +L 2 +D 3 +U 2 +L 1 +D 2 +L 5 +D 1 +R 5 +D 2 +R 4 +L 3 +D 2 +L 4 +D 2 +L 1 +D 1 +L 3 +D 4 +R 1 +U 2 +R 3 +U 2 +D 6 +U 6 +D 2 +U 3 +D 4 +U 2 +L 2 +D 2 +U 6 +R 5 +L 6 +R 1 +L 5 +U 5 +D 3 +U 3 +R 4 +D 2 +R 4 +D 4 +L 1 +D 5 +L 6 +D 2 +U 6 +D 1 +L 3 +U 1 +L 5 +D 4 +R 2 +U 1 +R 6 +L 6 +R 3 +U 6 +D 6 +R 2 +U 2 +D 3 +R 4 +U 6 +D 1 +R 6 +L 5 +U 3 +R 6 +L 4 +U 1 +L 6 +R 3 +L 5 +U 4 +L 6 +D 1 +L 3 +D 1 +U 1 +L 1 +D 5 +R 5 +L 4 +U 4 +L 3 +D 2 +R 1 +L 6 +D 6 +L 1 +D 4 +L 2 +R 5 +U 6 +L 6 +U 2 +D 3 +L 1 +D 4 +L 4 +U 3 +L 6 +U 3 +D 3 +U 3 +L 2 +U 2 +D 6 +U 5 +R 1 +U 2 +L 3 +U 5 +D 2 +U 2 +R 3 +D 4 +U 5 +D 1 +L 1 +D 2 +R 3 +U 6 +R 2 +D 5 +U 5 +R 3 +L 3 +U 3 +L 4 +R 1 +U 3 +L 3 +D 1 +U 7 +L 3 +U 1 +D 3 +U 4 +L 6 +R 2 +D 4 +U 5 +D 7 +L 1 +D 4 +U 6 +D 4 +U 1 +R 4 +U 4 +R 1 +L 4 +R 6 +L 7 +R 3 +D 1 +L 7 +R 6 +L 5 +D 1 +U 4 +D 3 +R 2 +D 6 +U 1 +D 3 +L 4 +D 1 +U 6 +D 7 +L 5 +D 6 +L 2 +U 4 +R 7 +U 1 +D 5 +U 1 +D 3 +R 3 +D 3 +L 6 +D 4 +U 4 +D 2 +U 1 +R 5 +D 2 +U 4 +D 3 +R 1 +U 5 +D 2 +R 1 +U 3 +R 5 +L 5 +D 1 +U 2 +R 1 +D 6 +R 6 +U 3 +L 5 +D 4 +U 6 +R 3 +U 1 +D 7 +U 6 +R 1 +D 5 +U 3 +D 2 +R 5 +U 1 +D 2 +L 2 +R 5 +L 1 +R 7 +U 3 +L 3 +R 5 +U 5 +L 6 +R 6 +D 1 +U 1 +R 7 +D 6 +U 6 +L 1 +D 2 +L 4 +R 6 +D 2 +R 7 +L 4 +U 5 +D 5 +U 4 +R 5 +D 3 +L 7 +U 7 +L 2 +R 7 +L 7 +R 7 +D 6 +U 6 +D 4 +R 8 +D 7 +U 7 +D 4 +U 5 +D 1 +L 1 +R 1 +D 5 +R 4 +D 1 +L 8 +D 7 +U 6 +R 5 +U 4 +R 8 +U 3 +L 2 +U 4 +L 1 +U 8 +L 2 +U 3 +L 6 +D 6 +L 6 +D 2 +L 7 +R 8 +U 6 +R 5 +U 7 +L 1 +D 1 +R 7 +L 1 +R 8 +U 1 +L 7 +U 2 +R 7 +D 2 +R 4 +D 5 +L 8 +R 6 +D 7 +R 7 +L 7 +U 6 +L 4 +D 3 +L 7 +R 7 +U 6 +L 8 +D 3 +L 2 +U 1 +R 7 +U 5 +L 4 +D 1 +U 2 +D 5 +L 1 +U 5 +R 4 +D 7 +U 5 +D 6 +L 6 +D 1 +L 2 +D 4 +R 1 +D 5 +U 5 +R 3 +U 4 +L 2 +U 3 +L 1 +U 8 +D 1 +R 6 +L 7 +R 8 +D 4 +L 8 +D 3 +R 1 +L 5 +D 5 +R 1 +U 5 +L 4 +R 1 +U 8 +R 7 +U 2 +R 8 +L 6 +D 1 +R 6 +U 1 +R 7 +L 7 +U 6 +D 1 +R 9 +L 1 +U 3 +D 9 +R 1 +D 2 +U 5 +L 8 +D 9 +U 8 +L 6 +U 2 +L 1 +D 4 +U 3 +D 8 +R 1 +U 3 +R 9 +L 6 +D 9 +L 3 +R 1 +D 3 +U 7 +L 2 +D 2 +U 9 +D 9 +U 5 +R 1 +L 4 +R 1 +U 8 +R 7 +U 6 +R 7 +D 3 +L 1 +U 5 +R 1 +L 3 +U 5 +D 3 +U 1 +L 3 +R 5 +L 9 +R 5 +L 6 +U 5 +L 4 +D 1 +U 5 +L 6 +D 4 +R 1 +L 5 +D 5 +L 9 +U 2 +L 9 +R 7 +L 3 +R 7 +L 2 +U 8 +R 9 +D 6 +R 3 +D 8 +U 8 +D 3 +R 4 +L 7 +R 7 +L 1 +U 7 +R 5 +D 7 +U 6 +L 2 +D 2 +L 5 +D 2 +R 3 +D 2 +L 8 +U 9 +L 5 +D 7 +U 1 +R 6 +L 4 +U 7 +D 1 +U 9 +D 1 +L 4 +U 6 +L 4 +D 1 +R 6 +U 7 +R 10 +L 6 +R 6 +L 4 +U 7 +L 7 +U 7 +R 2 +D 4 +R 6 +L 10 +D 1 +R 10 +D 9 +U 6 +R 1 +D 7 +U 1 +D 7 +U 1 +R 9 +D 6 +R 4 +D 4 +R 1 +U 4 +D 2 +R 9 +U 4 +D 6 +R 2 +U 5 +R 1 +L 10 +D 6 +L 8 +U 2 +R 10 +L 2 +R 9 +U 5 +R 9 +L 7 +U 1 +L 9 +R 1 +D 4 +U 5 +R 9 +D 4 +U 4 +R 4 +L 2 +D 9 +L 10 +R 4 +D 9 +L 6 +D 1 +L 7 +R 8 +L 8 +U 9 +R 1 +U 6 +D 8 +U 4 +R 1 +D 1 +L 2 +D 6 +U 4 +L 4 +R 9 +L 5 +D 2 +R 9 +U 3 +L 1 +R 7 +U 8 +R 9 +L 2 +U 6 +D 4 +R 2 +U 5 +D 5 +U 10 +D 4 +L 10 +R 10 +U 2 +L 2 +U 4 +D 2 +L 7 +R 10 +U 3 +L 10 +U 1 +D 9 +R 10 +U 2 +R 10 +U 2 +D 6 +L 11 +R 2 +D 10 +R 4 +U 9 +L 6 +D 3 +U 3 +R 7 +L 9 +R 11 +L 2 +D 5 +R 7 +D 7 +L 10 +U 10 +R 7 +L 1 +D 2 +U 5 +D 9 +R 5 +D 4 +L 8 +D 5 +R 3 +D 10 +U 5 +D 10 +L 9 +U 6 +L 7 +U 7 +R 4 +D 11 +L 5 +R 11 +D 6 +L 5 +U 1 +L 10 +R 7 +U 3 +L 8 +D 7 +U 4 +L 3 +U 3 +D 4 +U 11 +L 8 +D 10 +R 9 +U 5 +R 5 +U 3 +L 5 +R 9 +L 7 +D 11 +R 2 +D 8 +U 7 +R 8 +D 10 +R 3 +U 6 +L 10 +R 8 +D 9 +R 7 +U 2 +D 2 +U 11 +L 10 +R 8 +U 9 +R 10 +L 6 +U 8 +D 4 +L 11 +R 5 +U 10 +R 3 +L 4 +R 5 +D 11 +U 3 +R 2 +L 7 +R 10 +U 9 +R 8 +L 7 +D 10 +L 6 +R 1 +L 7 +D 7 +L 2 +U 4 +D 7 +U 9 +D 9 +L 5 +U 5 +D 10 +R 1 +D 8 +L 9 +R 5 +U 11 +D 3 +L 4 +U 2 +D 1 +U 7 +L 12 +R 11 +U 6 +R 2 +U 11 +R 3 +U 9 +L 10 +D 10 +L 7 +D 7 +U 2 +L 2 +U 8 +D 6 +U 11 +R 8 +U 7 +R 12 +L 12 +U 11 +D 3 +R 2 +L 3 +D 4 +R 3 +D 7 +R 3 +U 3 +D 4 +L 12 +R 10 +U 9 +L 10 +U 4 +R 2 +L 1 +R 3 +D 10 +U 12 +R 12 +L 6 +D 5 +L 1 +R 5 +U 2 +D 12 +R 8 +U 11 +D 1 +R 1 +D 9 +U 1 +L 9 +U 10 +L 5 +D 5 +R 5 +L 8 +R 4 +U 12 +R 4 +D 8 +R 2 +U 7 +R 7 +U 1 +R 6 +D 4 +U 7 +D 6 +L 12 +D 9 +U 7 +D 7 +U 4 +R 3 +D 10 +U 2 +L 8 +U 4 +D 2 +U 2 +R 7 +D 1 +U 4 +R 6 +U 7 +D 5 +L 10 +R 11 +U 8 +D 6 +L 7 +D 10 +U 12 +D 2 +R 6 +L 1 +R 5 +L 2 +U 4 +R 5 +L 1 +U 11 +L 6 +U 11 +L 10 +U 3 +R 13 +D 4 +L 7 +D 5 +U 1 +D 8 +L 8 +D 12 +L 12 +U 3 +D 11 +U 4 +L 3 +U 10 +R 5 +U 11 +L 13 +R 7 +D 2 +L 13 +U 8 +L 6 +D 6 +L 6 +U 11 +D 1 +U 6 +R 9 +D 6 +L 8 +U 3 +L 8 +D 8 +L 13 +R 6 +L 13 +R 2 +U 12 +D 9 +L 5 +D 3 +R 11 +U 10 +D 8 +L 13 +R 10 +U 10 +L 9 +U 1 +D 4 +U 13 +L 7 +U 12 +D 13 +L 2 +U 8 +D 9 +L 13 +R 4 +U 2 +D 13 +R 5 +D 10 +U 3 +D 12 +U 8 +R 3 +D 9 +R 10 +L 4 +U 8 +D 5 +U 13 +L 4 +R 5 +L 5 +R 5 +D 1 +L 9 +U 8 +L 5 +U 4 +D 11 +U 2 +D 6 +L 7 +R 2 +D 12 +R 12 +L 5 +D 6 +U 9 +L 2 +R 10 +L 7 +D 10 +U 12 +R 3 +U 8 +L 8 +R 4 +U 2 +R 4 +U 11 +D 7 +R 1 +D 4 +L 6 +D 14 +U 3 +R 4 +U 7 +D 11 +L 7 +D 10 +R 8 +U 2 +D 6 +R 5 +D 6 +U 1 +L 3 +U 12 +R 9 +D 7 +R 2 +L 1 +D 3 +L 4 +U 12 +R 2 +L 13 +U 5 +R 6 +U 13 +D 4 +L 12 +R 10 +D 1 +R 6 +L 3 +D 6 +L 9 +D 11 +R 2 +U 9 +L 14 +R 13 +D 14 +L 5 +R 9 +L 7 +D 4 +L 14 +R 8 +U 1 +L 13 +U 13 +R 10 +L 8 +D 10 +L 2 +U 10 +R 11 +U 4 +L 7 +R 9 +L 9 +U 10 +R 9 +D 3 +L 3 +D 9 +L 14 +U 5 +R 8 +U 12 +R 13 +U 12 +R 11 +D 12 +U 6 +D 5 +R 13 +U 12 +D 6 +R 8 +D 7 +U 9 +R 11 +L 7 +R 6 +L 12 +D 2 +R 9 +U 11 +L 7 +R 12 +U 9 +L 3 +U 2 +R 8 +D 5 +L 11 +R 4 +D 12 +L 14 +U 10 +R 3 +D 3 +L 11 +D 2 +R 14 +L 3 +R 3 +U 3 +R 2 +D 8 +U 4 +R 11 +L 13 +R 5 +L 3 +U 11 +R 7 +U 2 +R 6 +D 8 +L 3 +R 5 +U 11 +D 15 +U 1 +D 13 +L 11 +U 13 +D 4 +L 14 +D 15 +R 1 +U 14 +L 6 +U 12 +L 6 +U 11 +L 6 +R 11 +U 15 +D 8 +R 8 +L 10 +D 9 +R 1 +U 8 +D 1 +L 6 +U 5 +R 15 +U 11 +D 2 +R 14 +D 13 +L 15 +U 7 +R 9 +U 6 +L 9 +R 15 +L 14 +U 10 +R 8 +D 7 +U 12 +R 9 +U 15 +D 11 +U 2 +R 12 +D 13 +R 12 +D 2 +L 4 +U 13 +D 15 +U 9 +R 2 +U 5 +L 15 +D 3 +L 2 +U 7 +D 6 +L 11 +D 2 +R 12 +L 6 +D 5 +L 9 +R 11 +L 14 +R 2 +L 8 +R 9 +U 6 +L 3 +U 12 +L 15 +D 7 +L 14 +D 12 +L 15 +U 14 +D 9 +R 5 +L 11 +R 15 +D 8 +R 1 +D 14 +U 6 +D 7 +R 1 +L 6 +U 5 +R 12 +U 8 +D 13 +R 13 +U 1 +L 12 +D 2 +U 10 +R 13 +U 10 +L 16 +U 15 +D 2 +R 15 +L 3 +D 2 +R 4 +L 6 +U 9 +L 2 +D 3 +U 9 +D 12 +R 5 +D 2 +U 8 +D 6 +R 1 +L 4 +D 8 +U 16 +R 13 +L 12 +D 4 +L 9 +U 14 +D 15 +U 5 +L 1 +R 5 +U 4 +R 3 +L 14 +D 1 +R 2 +U 14 +L 1 +U 14 +R 12 +D 8 +U 1 +D 10 +L 12 +U 8 +R 6 +U 16 +L 4 +U 12 +R 2 +L 3 +D 5 +L 3 +U 16 +D 10 +L 16 +U 2 +D 8 +L 9 +D 3 +R 3 +U 7 +D 4 +L 1 +R 6 +L 15 +U 3 +L 9 +D 11 +U 9 +L 4 +R 10 +U 10 +D 11 +U 9 +R 7 +L 16 +D 16 +U 14 +D 16 +L 6 +D 12 +U 6 +D 10 +U 10 +L 7 +R 14 +U 3 +L 8 +U 7 +R 7 +L 2 +U 15 +L 7 +R 5 +L 16 +R 9 +L 1 +R 10 +D 11 +R 9 +L 9 +D 14 +R 9 +U 15 +R 16 +D 1 +U 9 +R 4 +L 15 +U 17 +R 7 +U 13 +L 11 +D 2 +U 4 +R 16 +U 10 +L 15 +U 10 +D 7 +U 5 +D 11 +R 9 +U 5 +R 17 +U 6 +L 2 +U 12 +D 8 +L 17 +U 15 +D 17 +L 17 +D 13 +R 15 +L 4 +R 8 +U 3 +D 5 +L 4 +R 6 +U 1 +D 1 +L 4 +D 10 +U 8 +L 14 +U 12 +R 12 +U 1 +L 11 +D 16 +L 10 +U 13 +L 2 +U 13 +R 16 +L 14 +R 9 +D 13 +U 16 +D 16 +L 12 +D 1 +U 4 +D 2 +L 7 +D 14 +U 17 +D 2 +U 15 +L 6 +R 5 +D 15 +U 17 +R 12 +L 6 +R 12 +D 10 +L 8 +R 12 +U 13 +R 7 +D 6 +L 2 +D 11 +L 14 +R 7 +L 16 +R 5 +U 2 +D 2 +L 7 +D 13 +U 10 +D 15 +R 3 +U 17 +L 16 +U 15 +D 7 +L 5 +U 8 +L 3 +D 11 +U 16 +L 6 +U 14 +D 11 +R 5 +L 8 +D 9 +L 2 +U 16 +L 12 +D 5 +R 17 +L 3 +U 7 +D 2 +R 12 +U 9 +R 1 +U 8 +L 5 +U 15 +R 5 +U 15 +L 6 +U 2 +D 10 +L 17 +R 15 +U 3 +R 18 +L 4 +R 13 +D 10 +L 5 +R 14 +L 12 +U 11 +R 3 +U 16 +R 16 +D 6 +R 16 +L 15 +R 9 +U 1 +L 15 +U 14 +L 2 +R 14 +L 16 +D 1 +R 16 +L 1 +U 6 +D 2 +U 6 +R 1 +U 11 +R 1 +L 14 +U 18 +D 8 +L 13 +D 7 +R 13 +U 18 +D 10 +U 7 +D 11 +L 11 +U 7 +D 12 +L 14 +R 1 +L 16 +U 16 +L 10 +D 8 +U 9 +L 1 +R 18 +D 7 +R 6 +L 5 +R 9 +U 12 +R 11 +D 9 +R 5 +L 13 +R 8 +D 2 +R 12 +L 14 +R 6 +L 16 +D 8 +U 18 +L 5 +D 15 +U 7 +R 18 +U 6 +R 5 +L 18 +R 9 +U 15 +R 15 +D 4 +R 7 +D 18 +L 18 +R 15 +D 8 +L 16 +D 17 +U 5 +L 16 +D 11 +R 5 +U 7 +D 2 +R 11 +U 17 +L 3 +R 9 +U 11 +D 6 +L 8 +R 11 +U 17 +D 2 +R 16 +U 2 +L 15 +D 11 +U 7 +R 16 +U 14 +L 4 +R 8 +D 18 +R 9 +U 18 +L 10 +D 16 +U 15 +D 19 +L 16 +D 17 +L 6 +U 16 +D 7 +L 5 +U 2 +D 11 +U 9 +L 4 +U 5 +R 10 +L 17 +D 16 +U 7 +D 16 +U 15 +R 3 +U 16 +R 15 +L 3 +U 14 +R 5 +L 6 +U 5 +D 4 +R 19 +D 3 +U 8 +D 12 +R 19 +U 18 +R 5 +U 5 +L 14 +D 6 +R 9 +L 19 +D 10 +U 18 +L 5 +D 6 +L 12 +U 13 +R 19 +U 4 +R 1 +L 6 +D 14 +L 17 +D 19 +L 2 +R 13 +U 18 +D 14 +U 11 +R 19 +L 8 +R 12 +L 3 +U 19 +R 5 +L 4 +D 9 +U 9 +L 19 +U 16 +L 1 +D 9 +R 15 +L 16 +R 2 +D 1 +L 7 +U 1 +D 4 +L 19 +R 15 +D 7 +U 7 +L 17 +D 9 +U 19 +D 6 +R 19 +U 16 \ No newline at end of file