about summary refs log tree commit diff
path: root/Day02.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Day02.cs')
-rw-r--r--Day02.cs46
1 files changed, 46 insertions, 0 deletions
diff --git a/Day02.cs b/Day02.cs
new file mode 100644
index 0000000..3a79970
--- /dev/null
+++ b/Day02.cs
@@ -0,0 +1,46 @@
+using System.Collections.Generic;
+using System.Linq;
+
+namespace aoc2019
+{
+    internal sealed class Day02 : Day
+    {
+        private readonly IEnumerable<int> input;
+
+        public Day02() : base(2, "1202 Program Alarm")
+        {
+            input = Input.First().Split(',').Select(int.Parse);
+        }
+
+        public int RunIntCode(int noun, int verb)
+        {
+            var v = input.ToList();
+            v[1] = noun;
+            v[2] = verb;
+
+            for (var i = 0; v[i] != 99; i += 4)
+                v[v[i + 3]] = v[i] switch
+                {
+                    1 => v[v[i + 1]] + v[v[i + 2]],
+                    2 => v[v[i + 1]] * v[v[i + 2]]
+                };
+
+            return v[0];
+        }
+
+        protected override string Part1()
+        {
+            return $"{RunIntCode(12, 2)}";
+        }
+
+        protected override string Part2()
+        {
+            for (var i = 0; i < 100; i++)
+            for (var j = 0; j < 100; j++)
+                if (RunIntCode(i, j) == 19690720)
+                    return $"{100 * i + j}";
+
+            return string.Empty;
+        }
+    }
+}
\ No newline at end of file