about summary refs log tree commit diff
path: root/Day02.cs
blob: 3a799708a606602e04da9e1ee46271a0c5aba9a0 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
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;
        }
    }
}