about summary refs log tree commit diff
diff options
context:
space:
mode:
authorBen Harris <ben@tilde.team>2021-12-02 00:11:44 -0500
committerBen Harris <ben@tilde.team>2021-12-02 00:11:44 -0500
commit437ad3ecfa330b53af289785758eabf807c62e37 (patch)
treeb276a6ea2ca20a50f2b02c89dffc224939cec82a
parent49a58d28bf41e59da9da2a90535358f772f4f355 (diff)
solve day 2
-rw-r--r--aoc2021.test/DayTests.cs2
-rw-r--r--aoc2021/Day02.cs60
-rw-r--r--aoc2021/aoc2021.csproj10
-rw-r--r--aoc2021/input/day02.in1000
-rw-r--r--aoc2021/input/test02.in6
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