From 437ad3ecfa330b53af289785758eabf807c62e37 Mon Sep 17 00:00:00 2001 From: Ben Harris Date: Thu, 2 Dec 2021 00:11:44 -0500 Subject: [PATCH] solve day 2 --- aoc2021.test/DayTests.cs | 2 + aoc2021/Day02.cs | 60 +++ aoc2021/aoc2021.csproj | 10 +- aoc2021/input/day02.in | 1000 ++++++++++++++++++++++++++++++++++++++ aoc2021/input/test02.in | 6 + 5 files changed, 1073 insertions(+), 5 deletions(-) create mode 100644 aoc2021/Day02.cs create mode 100644 aoc2021/input/day02.in create mode 100644 aoc2021/input/test02.in 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; + +/// +/// Day 2: +/// +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 @@ - - - - - + + + + + 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