2019-12-02 06:00:53 +00:00
|
|
|
using System.Collections.Generic;
|
|
|
|
using System.IO;
|
|
|
|
using System.Linq;
|
|
|
|
|
|
|
|
namespace aoc2019
|
|
|
|
{
|
2019-12-03 03:10:05 +00:00
|
|
|
public class Day2 : Day
|
2019-12-02 06:00:53 +00:00
|
|
|
{
|
2019-12-05 06:19:39 +00:00
|
|
|
public override int DayNumber => 2;
|
|
|
|
|
2019-12-06 07:01:51 +00:00
|
|
|
private readonly IEnumerable<int> input;
|
|
|
|
public Day2()
|
|
|
|
{
|
|
|
|
input = Input.First().Split(',').Select(int.Parse);
|
|
|
|
}
|
2019-12-02 06:00:53 +00:00
|
|
|
|
2019-12-05 06:55:15 +00:00
|
|
|
public int RunIntCode(int noun, int verb)
|
2019-12-02 06:00:53 +00:00
|
|
|
{
|
2019-12-05 06:55:15 +00:00
|
|
|
var v = input.ToList();
|
2019-12-05 06:19:39 +00:00
|
|
|
v[1] = noun; v[2] = verb;
|
|
|
|
|
2019-12-03 02:02:12 +00:00
|
|
|
for (var i = 0; v[i] != 99; i += 4)
|
2019-12-05 06:55:15 +00:00
|
|
|
v[v[i + 3]] = v[i] switch
|
2019-12-02 06:00:53 +00:00
|
|
|
{
|
2019-12-05 06:55:15 +00:00
|
|
|
1 => v[v[i + 1]] + v[v[i + 2]],
|
|
|
|
2 => v[v[i + 1]] * v[v[i + 2]]
|
|
|
|
};
|
|
|
|
|
|
|
|
return v[0];
|
2019-12-02 06:00:53 +00:00
|
|
|
}
|
|
|
|
|
2019-12-05 06:19:39 +00:00
|
|
|
public override string Part1()
|
2019-12-02 06:00:53 +00:00
|
|
|
{
|
2019-12-05 06:55:15 +00:00
|
|
|
return $"{RunIntCode(12, 2)}";
|
2019-12-02 06:00:53 +00:00
|
|
|
}
|
|
|
|
|
2019-12-05 06:19:39 +00:00
|
|
|
public override string Part2()
|
2019-12-02 06:00:53 +00:00
|
|
|
{
|
|
|
|
for (var i = 0; i < 100; i++)
|
|
|
|
for (var j = 0; j < 100; j++)
|
2019-12-05 06:55:15 +00:00
|
|
|
if (RunIntCode(i, j) == 19690720)
|
2019-12-05 06:19:39 +00:00
|
|
|
return $"{100 * i + j}";
|
2019-12-02 06:00:53 +00:00
|
|
|
|
2019-12-05 06:19:39 +00:00
|
|
|
return string.Empty;
|
2019-12-02 06:00:53 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|