about summary refs log tree commit diff
path: root/aoc2019/Day19.cs
blob: 9183371cd2901726a31beba5074984ce034268f9 (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
namespace aoc2019;

public sealed class Day19 : Day
{
    private readonly long[,] grid;
    private readonly IntCodeVM vm;

    public Day19() : base(19, "Tractor Beam")
    {
        vm = new(Input.First());
        grid = new long[50, 50];
    }

    public override string Part1()
    {
        for (var x = 0; x < 50; x++)
            for (var y = 0; y < 50; y++)
            {
                vm.Reset();
                vm.Run(x, y);
                grid[x, y] = vm.Result;
            }

        return $"{grid.Cast<long>().Sum()}";
    }

    public override string Part2()
    {
        for (int x = 101, y = 0; ; x++)
        {
            while (true)
            {
                vm.Reset();
                vm.Run(x, y);
                if (vm.Result == 1) break;
                y++;
            }

            vm.Reset();
            vm.Run(x - 99, y + 99);
            if (vm.Result == 1)
                return $"{(x - 99) * 1e4 + y}";
        }
    }
}