diff options
-rw-r--r-- | aoc2021.test/DayTests.cs | 2 | ||||
-rw-r--r-- | aoc2021/Day02.cs | 60 | ||||
-rw-r--r-- | aoc2021/aoc2021.csproj | 10 | ||||
-rw-r--r-- | aoc2021/input/day02.in | 1000 | ||||
-rw-r--r-- | aoc2021/input/test02.in | 6 |
5 files changed, 1073 insertions, 5 deletions
diff --git a/aoc2021.test/DayTests.cs b/aoc2021.test/DayTests.cs index 3bc1d84..9a10d38 100644 --- a/aoc2021.test/DayTests.cs +++ b/aoc2021.test/DayTests.cs @@ -5,6 +5,7 @@ public class DayTests { [DataTestMethod] [DataRow(typeof(Day01), "1616", "1645")] + [DataRow(typeof(Day02), "2272262", "2134882034")] public void CheckAllDays(Type dayType, string part1, string part2) { var s = Stopwatch.StartNew(); @@ -36,6 +37,7 @@ public class DayTests [DataTestMethod] [DataRow(typeof(Day01), "7", "5")] + [DataRow(typeof(Day02), "150", "900")] public void CheckTestInputs(Type dayType, string part1, string part2) { Day.UseTestInput = true; diff --git a/aoc2021/Day02.cs b/aoc2021/Day02.cs new file mode 100644 index 0000000..a099520 --- /dev/null +++ b/aoc2021/Day02.cs @@ -0,0 +1,60 @@ +namespace aoc2021; + +/// <summary> +/// Day 2: <see href="https://adventofcode.com/2021/day/2"/> +/// </summary> +public sealed class Day02 : Day +{ + public Day02() : base(2, "Dive!") + { + } + + public override string Part1() + { + int horiz = 0, depth = 0; + foreach (var line in Input) + { + var s = line.Split(' '); + var x = int.Parse(s[1]); + switch (s[0]) + { + case "forward": + horiz += x; + break; + case "down": + depth += x; + break; + case "up": + depth -= x; + break; + } + } + + return $"{horiz * depth}"; + } + + public override string Part2() + { + int aim = 0, depth = 0, horiz = 0; + foreach (var line in Input) + { + var s = line.Split(' '); + var x = int.Parse(s[1]); + switch (s[0]) + { + case "forward": + horiz += x; + depth += aim * x; + break; + case "down": + aim += x; + break; + case "up": + aim -= x; + break; + } + } + + return $"{horiz * depth}"; + } +} diff --git a/aoc2021/aoc2021.csproj b/aoc2021/aoc2021.csproj index 395175a..48c127c 100644 --- a/aoc2021/aoc2021.csproj +++ b/aoc2021/aoc2021.csproj @@ -14,11 +14,11 @@ </ItemGroup> <ItemGroup> - <Using Include="System.Collections.Generic"/> - <Using Include="System.Diagnostics"/> - <Using Include="System.Reflection"/> - <Using Include="System.Text"/> - <Using Include="System.Text.RegularExpressions"/> + <Using Include="System.Collections.Generic" /> + <Using Include="System.Diagnostics" /> + <Using Include="System.Reflection" /> + <Using Include="System.Text" /> + <Using Include="System.Text.RegularExpressions" /> </ItemGroup> </Project> diff --git a/aoc2021/input/day02.in b/aoc2021/input/day02.in new file mode 100644 index 0000000..4b708f6 --- /dev/null +++ b/aoc2021/input/day02.in @@ -0,0 +1,1000 @@ +forward 1 +forward 8 +down 9 +forward 3 +down 6 +down 1 +down 1 +forward 5 +forward 5 +forward 8 +down 6 +forward 7 +down 3 +down 4 +up 1 +forward 7 +forward 5 +forward 8 +down 1 +forward 9 +forward 9 +forward 7 +up 8 +forward 5 +forward 9 +down 3 +forward 2 +down 5 +down 4 +up 2 +up 5 +forward 3 +forward 8 +down 9 +down 1 +forward 2 +forward 6 +up 2 +up 9 +forward 8 +down 7 +forward 2 +up 5 +forward 7 +down 9 +forward 9 +forward 5 +down 8 +down 6 +forward 2 +up 4 +down 2 +down 9 +forward 4 +down 4 +forward 9 +down 8 +down 7 +down 4 +forward 6 +forward 9 +up 7 +down 2 +up 6 +down 8 +forward 3 +forward 9 +forward 7 +down 1 +forward 1 +forward 7 +forward 5 +down 4 +down 1 +forward 4 +forward 9 +forward 6 +down 5 +down 1 +forward 9 +down 6 +down 4 +forward 8 +up 8 +forward 9 +up 9 +up 9 +up 7 +forward 4 +down 4 +forward 4 +forward 2 +forward 2 +forward 9 +up 4 +forward 4 +forward 3 +forward 5 +down 3 +up 4 +forward 3 +forward 5 +forward 9 +forward 7 +down 1 +forward 4 +down 5 +up 6 +down 9 +forward 8 +down 1 +forward 3 +down 2 +up 8 +down 5 +down 8 +forward 5 +down 6 +forward 6 +down 7 +up 5 +forward 8 +forward 5 +forward 7 +up 3 +down 6 +up 9 +forward 1 +forward 7 +forward 3 +forward 8 +up 4 +up 9 +down 5 +forward 5 +forward 4 +forward 4 +down 9 +up 6 +forward 5 +forward 2 +down 6 +down 2 +forward 9 +down 7 +forward 8 +down 4 +forward 8 +forward 8 +up 7 +up 5 +forward 6 +forward 4 +up 4 +forward 2 +up 3 +down 8 +forward 1 +forward 8 +forward 8 +forward 4 +up 7 +forward 2 +down 8 +forward 1 +down 1 +down 4 +up 3 +forward 8 +forward 1 +down 9 +up 5 +down 5 +forward 9 +forward 4 +up 7 +down 2 +down 4 +forward 1 +forward 6 +up 8 +up 1 +forward 8 +down 5 +down 5 +forward 9 +down 8 +forward 9 +down 1 +up 7 +forward 8 +up 2 +down 2 +up 1 +up 9 +forward 6 +down 5 +forward 1 +down 2 +forward 5 +down 3 +up 8 +down 2 +down 8 +forward 7 +forward 2 +up 3 +forward 3 +down 1 +forward 4 +down 7 +up 5 +forward 8 +forward 8 +up 6 +up 4 +up 4 +down 7 +forward 2 +forward 1 +forward 6 +up 3 +forward 3 +forward 9 +down 4 +forward 2 +down 9 +down 8 +forward 5 +forward 2 +forward 4 +forward 5 +forward 7 +down 4 +up 5 +down 7 +forward 4 +up 7 +down 9 +down 4 +down 3 +forward 8 +down 5 +forward 8 +forward 8 +down 3 +down 8 +down 2 +forward 4 +forward 5 +down 7 +down 7 +down 6 +up 9 +down 9 +down 5 +forward 4 +down 1 +down 7 +up 4 +down 8 +up 5 +up 1 +down 9 +down 7 +forward 9 +forward 7 +down 6 +up 2 +forward 1 +down 8 +up 2 +forward 8 +down 2 +forward 2 +down 9 +forward 2 +forward 3 +forward 7 +up 3 +up 3 +up 3 +forward 5 +up 9 +up 1 +down 9 +down 4 +down 5 +up 9 +up 7 +down 9 +forward 3 +down 5 +down 6 +down 3 +up 6 +forward 8 +up 6 +up 8 +down 4 +forward 8 +down 8 +forward 7 +up 1 +forward 4 +down 2 +forward 7 +down 6 +up 8 +forward 1 +down 8 +down 4 +forward 7 +forward 2 +up 4 +forward 9 +forward 9 +down 8 +up 1 +down 3 +forward 7 +down 9 +forward 2 +forward 5 +down 4 +down 8 +down 3 +up 1 +down 2 +up 3 +forward 1 +forward 5 +forward 3 +down 2 +up 2 +forward 7 +down 6 +forward 3 +down 8 +forward 5 +forward 4 +up 2 +forward 4 +up 2 +down 4 +forward 8 +forward 5 +down 1 +forward 6 +down 2 +down 5 +up 8 +forward 5 +down 2 +up 5 +down 5 +forward 4 +forward 3 +forward 8 +down 9 +up 3 +forward 4 +forward 2 +forward 2 +forward 2 +down 4 +forward 8 +forward 5 +up 3 +down 1 +forward 3 +up 5 +forward 8 +down 6 +forward 6 +down 9 +forward 6 +up 5 +down 6 +up 9 +forward 8 +down 2 +forward 9 +down 7 +down 5 +down 4 +forward 3 +forward 2 +forward 1 +forward 7 +down 3 +forward 4 +up 6 +down 5 +down 4 +down 8 +down 4 +up 6 +forward 3 +down 4 +down 6 +forward 9 +forward 6 +up 4 +down 2 +down 7 +forward 2 +forward 9 +down 4 +down 8 +down 3 +down 4 +forward 9 +forward 4 +forward 1 +down 7 +forward 2 +up 1 +forward 7 +down 7 +forward 7 +forward 5 +up 8 +down 4 +up 7 +up 2 +up 7 +up 8 +down 9 +forward 8 +forward 8 +down 3 +forward 9 +down 3 +up 7 +down 1 +down 9 +forward 2 +up 4 +down 2 +forward 2 +up 5 +up 5 +up 1 +forward 7 +up 5 +down 3 +up 8 +down 9 +down 7 +up 4 +down 8 +down 4 +forward 8 +up 6 +down 2 +down 4 +forward 7 +forward 8 +forward 8 +forward 1 +down 4 +down 4 +forward 4 +down 7 +forward 3 +down 3 +down 6 +down 7 +down 6 +forward 8 +down 4 +down 7 +down 1 +down 7 +down 5 +down 2 +up 5 +forward 9 +down 3 +down 4 +down 4 +forward 5 +down 9 +forward 1 +up 1 +up 1 +down 3 +forward 8 +up 6 +up 6 +down 1 +up 2 +down 7 +down 9 +up 7 +forward 7 +down 6 +down 5 +down 5 +up 8 +forward 7 +down 1 +down 6 +forward 4 +forward 5 +forward 5 +forward 2 +down 5 +up 6 +down 5 +forward 1 +down 9 +up 4 +down 7 +down 8 +down 5 +down 8 +forward 7 +forward 2 +up 3 +down 7 +forward 1 +forward 4 +forward 5 +forward 1 +forward 7 +down 6 +forward 9 +forward 8 +down 5 +forward 5 +forward 8 +forward 3 +up 1 +forward 6 +forward 9 +forward 8 +down 3 +forward 8 +forward 7 +down 1 +forward 9 +down 9 +forward 6 +forward 4 +forward 2 +forward 9 +down 7 +down 6 +forward 4 +forward 1 +forward 3 +forward 9 +up 4 +down 5 +forward 6 +down 8 +up 5 +down 9 +down 6 +forward 7 +down 9 +forward 6 +forward 5 +down 1 +down 4 +up 6 +forward 2 +down 8 +down 5 +up 5 +forward 6 +forward 5 +down 8 +down 4 +down 3 +down 8 +forward 3 +forward 9 +up 6 +down 9 +down 1 +forward 7 +forward 5 +down 5 +down 1 +forward 7 +forward 3 +up 6 +forward 1 +up 9 +forward 1 +down 4 +down 3 +down 3 +up 6 +forward 9 +forward 5 +up 9 +up 5 +forward 5 +forward 7 +forward 9 +down 8 +forward 2 +down 7 +down 7 +forward 3 +down 2 +up 1 +down 4 +down 6 +down 8 +forward 8 +forward 6 +up 3 +forward 9 +down 8 +up 7 +forward 6 +forward 9 +up 8 +forward 3 +down 9 +forward 3 +forward 4 +down 3 +down 2 +forward 2 +down 5 +down 9 +down 2 +down 7 +down 4 +down 6 +forward 5 +up 1 +forward 9 +forward 2 +up 8 +forward 8 +down 3 +forward 7 +down 5 +forward 5 +down 5 +down 9 +down 9 +down 6 +down 5 +down 4 +up 6 +forward 9 +down 2 +down 5 +up 3 +forward 8 +forward 1 +down 4 +down 8 +forward 6 +forward 7 +up 2 +forward 1 +forward 2 +down 7 +down 6 +up 7 +forward 7 +down 6 +down 6 +down 8 +forward 8 +up 5 +up 9 +forward 8 +forward 1 +down 6 +down 6 +up 7 +forward 6 +up 5 +forward 7 +down 1 +forward 1 +forward 9 +up 7 +down 3 +forward 4 +down 6 +down 6 +up 5 +up 7 +down 1 +up 2 +down 8 +down 1 +forward 2 +down 3 +forward 8 +forward 2 +up 2 +down 7 +forward 5 +forward 7 +down 2 +up 1 +down 1 +down 6 +down 4 +up 1 +forward 2 +forward 7 +forward 8 +down 1 +forward 6 +down 5 +down 8 +up 6 +down 7 +forward 6 +down 8 +down 6 +down 9 +forward 8 +down 9 +down 6 +up 2 +down 2 +down 5 +down 5 +up 8 +forward 6 +forward 7 +up 4 +down 5 +up 5 +forward 6 +forward 8 +up 6 +up 7 +up 3 +up 9 +down 6 +forward 3 +forward 3 +down 6 +down 8 +down 2 +down 2 +up 7 +up 6 +forward 5 +forward 4 +down 2 +down 3 +forward 8 +down 9 +forward 3 +down 8 +down 8 +forward 9 +forward 7 +down 8 +down 7 +up 2 +down 8 +down 1 +down 7 +up 7 +forward 3 +forward 5 +up 1 +down 9 +forward 3 +down 4 +down 5 +down 3 +down 8 +up 7 +forward 4 +down 6 +forward 9 +forward 9 +forward 1 +up 6 +up 8 +forward 6 +down 6 +down 6 +forward 1 +up 4 +down 2 +forward 8 +forward 6 +down 2 +down 9 +down 6 +down 4 +forward 5 +down 5 +down 7 +down 6 +forward 8 +down 8 +down 2 +up 2 +up 2 +down 3 +forward 2 +down 2 +down 5 +down 3 +up 5 +down 8 +forward 8 +down 8 +down 4 +down 3 +forward 7 +forward 1 +forward 1 +down 7 +down 6 +down 2 +up 9 +up 7 +down 9 +forward 1 +down 3 +down 4 +down 7 +forward 6 +down 8 +forward 3 +down 6 +forward 4 +down 3 +down 5 +down 4 +forward 4 +up 4 +up 1 +up 2 +down 3 +forward 6 +up 6 +forward 8 +forward 9 +forward 3 +forward 4 +forward 2 +forward 8 +forward 7 +up 4 +down 5 +forward 8 +forward 6 +down 2 +forward 3 +down 5 +down 8 +forward 3 +forward 4 +down 3 +down 9 +down 6 +up 6 +down 1 +down 8 +forward 7 +down 3 +forward 8 +forward 4 +down 2 +up 7 +down 5 +forward 1 +forward 7 +forward 1 +forward 3 +down 8 +down 7 +forward 5 +forward 3 +down 1 +forward 7 +down 4 +down 3 +down 6 +down 9 +forward 6 +down 1 +forward 3 +forward 3 +forward 5 +forward 9 +up 3 +up 6 +forward 7 +up 5 +up 9 +down 2 +down 5 +up 5 +forward 4 +forward 4 +forward 6 +up 2 +down 9 +down 4 +down 2 +forward 7 +down 3 +up 4 +up 6 +forward 7 +forward 1 +forward 1 +down 7 +forward 5 +forward 4 +up 6 +forward 4 +forward 2 +forward 6 +up 1 +up 5 +forward 8 +up 2 +forward 3 +forward 5 +up 9 +down 4 +forward 1 +up 7 +down 5 +forward 7 +forward 2 +forward 8 +down 8 +down 2 +forward 2 +forward 4 +forward 8 +forward 1 +forward 8 +forward 2 +down 9 +forward 7 +down 7 +down 5 +up 9 +forward 5 +down 1 +down 9 +down 2 +forward 6 +down 8 +up 9 +forward 5 +down 2 +forward 1 +up 4 +forward 1 +down 9 +up 3 +down 3 +down 2 +forward 9 +down 5 +forward 4 +down 1 +forward 4 +down 8 +down 3 +forward 8 +forward 2 +forward 3 +down 1 +forward 1 +down 2 +forward 6 +up 3 +up 5 +up 9 +forward 9 +down 5 +down 5 +forward 4 +up 6 +down 7 +down 2 +forward 8 +forward 6 +forward 6 +up 6 +down 7 +forward 8 diff --git a/aoc2021/input/test02.in b/aoc2021/input/test02.in new file mode 100644 index 0000000..b88bd7a --- /dev/null +++ b/aoc2021/input/test02.in @@ -0,0 +1,6 @@ +forward 5 +down 5 +forward 8 +up 3 +down 8 +forward 2 \ No newline at end of file |