diff options
-rw-r--r-- | Day2.cs | 39 |
1 files changed, 8 insertions, 31 deletions
diff --git a/Day2.cs b/Day2.cs index b6be148..3cbb1ec 100644 --- a/Day2.cs +++ b/Day2.cs @@ -13,44 +13,19 @@ namespace aoc2019 .Split(',') .Select(num => int.Parse(num)); - private static bool debug = false; - - public static void Log(string log) - { - if (debug) - Console.WriteLine(log); - } - - public static void RunIntCode(ref List<int> output) + public static void RunIntCode(ref List<int> v) { - for (var i = 0; i < output.Count(); i++) - { - if (output[i] == 1) + for (var i = 0; v[i] != 99; i += 4) + switch (v[i]) { - var val = output[output[i + 1]] + output[output[i + 2]]; - Log($"saving {val} to {output[i + 3]}"); - output[output[i + 3]] = val; - i += 3; + 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; } - else if (output[i] == 2) - { - var val = output[output[i + 1]] * output[output[i + 2]]; - Log($"saving {val} to {output[i + 3]}"); - output[output[i + 3]] = val; - i += 3; - } - else - { - Log($"invalid operation: found {output[i]} at {i}"); - break; - } - Log(string.Join(',', output)); - } } public static void Part1() { - List<int> output = input.ToList(); + var output = input.ToList(); output[1] = 12; output[2] = 2; @@ -62,6 +37,7 @@ namespace aoc2019 public static void Part2() { List<int> output; + for (var i = 0; i < 100; i++) { for (var j = 0; j < 100; j++) @@ -75,6 +51,7 @@ namespace aoc2019 if (output[0] == 19690720) { Console.WriteLine($"{100 * i + j}"); + return; } } } |