about summary refs log tree commit diff
path: root/Day2.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Day2.cs')
-rw-r--r--Day2.cs44
1 files changed, 13 insertions, 31 deletions
diff --git a/Day2.cs b/Day2.cs
index 10dc15f..e469bcc 100644
--- a/Day2.cs
+++ b/Day2.cs
@@ -1,4 +1,3 @@
-using System;
 using System.Collections.Generic;
 using System.IO;
 using System.Linq;
@@ -7,54 +6,37 @@ namespace aoc2019
 {
     public class Day2 : Day
     {
+        public override int DayNumber => 2;
+
         private static readonly IEnumerable<int> input =
-            File.ReadLines("input/day2.in")
-            .First()
-            .Split(',')
-            .Select(num => int.Parse(num));
+            File.ReadLines("input/day2.in").First().Split(',').Select(int.Parse);
 
-        public static void RunIntCode(ref List<int> v)
+        public static List<int> RunIntCode(int noun, int verb, List<int> v)
         {
+            v[1] = noun; v[2] = verb;
+
             for (var i = 0; v[i] != 99; i += 4)
                 switch (v[i])
                 {
                     case 1: v[v[i + 3]] = v[v[i + 1]] + v[v[i + 2]]; break;
                     case 2: v[v[i + 3]] = v[v[i + 1]] * v[v[i + 2]]; break;
                 }
+            return v;
         }
 
-        public override void Part1()
+        public override string Part1()
         {
-            var output = input.ToList();
-            output[1] = 12;
-            output[2] = 2;
-
-            RunIntCode(ref output);
-
-            Console.WriteLine($"{output[0]}");
+            return $"{RunIntCode(12, 2, input.ToList())[0]}";
         }
 
-        public override void Part2()
+        public override string Part2()
         {
-            List<int> output;
-
             for (var i = 0; i < 100; i++)
-            {
                 for (var j = 0; j < 100; j++)
-                {
-                    output = input.ToList();
-                    output[1] = i;
-                    output[2] = j;
+                    if (RunIntCode(i, j, input.ToList())[0] == 19690720)
+                        return $"{100 * i + j}";
 
-                    RunIntCode(ref output);
-
-                    if (output[0] == 19690720)
-                    {
-                        Console.WriteLine($"{100 * i + j}");
-                        return;
-                    }
-                }
-            }
+            return string.Empty;
         }
     }
 }