diff options
Diffstat (limited to 'Day02.cs')
-rw-r--r-- | Day02.cs | 46 |
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 |