about summary refs log tree commit diff
path: root/aoc2019/Day05.cs
diff options
context:
space:
mode:
Diffstat (limited to 'aoc2019/Day05.cs')
-rw-r--r--aoc2019/Day05.cs124
1 files changed, 60 insertions, 64 deletions
diff --git a/aoc2019/Day05.cs b/aoc2019/Day05.cs
index 2020627..b91089e 100644
--- a/aoc2019/Day05.cs
+++ b/aoc2019/Day05.cs
@@ -1,78 +1,74 @@
-using System.Collections.Generic;
-using System.Linq;
+namespace aoc2019;
 
-namespace aoc2019
+public sealed class Day05 : Day
 {
-    public sealed class Day05 : Day
-    {
-        private readonly IEnumerable<int> tape;
+    private readonly IEnumerable<int> tape;
 
-        private int output;
+    private int output;
 
-        public Day05() : base(5, "Sunny with a Chance of Asteroids")
-        {
-            tape = Input.First().Split(',').Select(int.Parse);
-        }
+    public Day05() : base(5, "Sunny with a Chance of Asteroids")
+    {
+        tape = Input.First().Split(',').Select(int.Parse);
+    }
 
-        public void RunIntCode(List<int> v, int input)
+    public void RunIntCode(List<int> v, int input)
+    {
+        var i = 0;
+        while (i < v.Count && v[i] != 99)
         {
-            var i = 0;
-            while (i < v.Count && v[i] != 99)
+            int Val(int mode, int val)
             {
-                int Val(int mode, int val)
-                {
-                    return mode != 0 ? val : v[val];
-                }
+                return mode != 0 ? val : v[val];
+            }
 
-                var mode1 = v[i] / 100 % 10;
-                var mode2 = v[i] / 1000;
+            var mode1 = v[i] / 100 % 10;
+            var mode2 = v[i] / 1000;
 
-                switch (v[i] % 100)
-                {
-                    case 1:
-                        v[v[i + 3]] = Val(mode1, v[i + 1]) + Val(mode2, v[i + 2]);
-                        i += 4;
-                        break;
-                    case 2:
-                        v[v[i + 3]] = Val(mode1, v[i + 1]) * Val(mode2, v[i + 2]);
-                        i += 4;
-                        break;
-                    case 3:
-                        v[v[i + 1]] = input;
-                        i += 2;
-                        break;
-                    case 4:
-                        output = Val(mode1, v[i + 1]);
-                        i += 2;
-                        break;
-                    case 5:
-                        i = Val(mode1, v[i + 1]) == 0 ? i + 3 : Val(mode2, v[i + 2]);
-                        break;
-                    case 6:
-                        i = Val(mode1, v[i + 1]) != 0 ? i + 3 : Val(mode2, v[i + 2]);
-                        break;
-                    case 7:
-                        v[v[i + 3]] = Val(mode1, v[i + 1]) < Val(mode2, v[i + 2]) ? 1 : 0;
-                        i += 4;
-                        break;
-                    case 8:
-                        v[v[i + 3]] = Val(mode1, v[i + 1]) == Val(mode2, v[i + 2]) ? 1 : 0;
-                        i += 4;
-                        break;
-                }
+            switch (v[i] % 100)
+            {
+                case 1:
+                    v[v[i + 3]] = Val(mode1, v[i + 1]) + Val(mode2, v[i + 2]);
+                    i += 4;
+                    break;
+                case 2:
+                    v[v[i + 3]] = Val(mode1, v[i + 1]) * Val(mode2, v[i + 2]);
+                    i += 4;
+                    break;
+                case 3:
+                    v[v[i + 1]] = input;
+                    i += 2;
+                    break;
+                case 4:
+                    output = Val(mode1, v[i + 1]);
+                    i += 2;
+                    break;
+                case 5:
+                    i = Val(mode1, v[i + 1]) == 0 ? i + 3 : Val(mode2, v[i + 2]);
+                    break;
+                case 6:
+                    i = Val(mode1, v[i + 1]) != 0 ? i + 3 : Val(mode2, v[i + 2]);
+                    break;
+                case 7:
+                    v[v[i + 3]] = Val(mode1, v[i + 1]) < Val(mode2, v[i + 2]) ? 1 : 0;
+                    i += 4;
+                    break;
+                case 8:
+                    v[v[i + 3]] = Val(mode1, v[i + 1]) == Val(mode2, v[i + 2]) ? 1 : 0;
+                    i += 4;
+                    break;
             }
         }
+    }
 
-        public override string Part1()
-        {
-            RunIntCode(tape.ToList(), 1);
-            return $"{output}";
-        }
+    public override string Part1()
+    {
+        RunIntCode(tape.ToList(), 1);
+        return $"{output}";
+    }
 
-        public override string Part2()
-        {
-            RunIntCode(tape.ToList(), 5);
-            return $"{output}";
-        }
+    public override string Part2()
+    {
+        RunIntCode(tape.ToList(), 5);
+        return $"{output}";
     }
-}
\ No newline at end of file
+}