day2
This commit is contained in:
parent
fd4b64cb61
commit
50e089ec1d
|
@ -0,0 +1,84 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
|
||||
namespace aoc2019
|
||||
{
|
||||
public class Day2
|
||||
{
|
||||
private static IEnumerable<int> input =
|
||||
File.ReadLines("input/day2.in")
|
||||
.First()
|
||||
.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)
|
||||
{
|
||||
for (var i = 0; i < output.Count(); i++)
|
||||
{
|
||||
if (output[i] == 1)
|
||||
{
|
||||
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 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();
|
||||
output[1] = 12;
|
||||
output[2] = 2;
|
||||
|
||||
RunIntCode(ref output);
|
||||
|
||||
Console.WriteLine($"{output[0]}");
|
||||
}
|
||||
|
||||
public static void Part2()
|
||||
{
|
||||
List<int> output;
|
||||
for (var i = 0; i < 100; i++)
|
||||
{
|
||||
for (var j = 0; j < 100; j++)
|
||||
{
|
||||
output = input.ToList();
|
||||
output[1] = i;
|
||||
output[2] = j;
|
||||
|
||||
RunIntCode(ref output);
|
||||
|
||||
if (output[0] == 19690720)
|
||||
{
|
||||
Console.WriteLine($"{100 * i + j}");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -10,6 +10,9 @@ namespace aoc2019
|
|||
{
|
||||
Day1.Part1();
|
||||
Day1.Part2();
|
||||
|
||||
Day2.Part1();
|
||||
Day2.Part2();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
1,0,0,3,1,1,2,3,1,3,4,3,1,5,0,3,2,10,1,19,1,19,9,23,1,23,13,27,1,10,27,31,2,31,13,35,1,10,35,39,2,9,39,43,2,43,9,47,1,6,47,51,1,10,51,55,2,55,13,59,1,59,10,63,2,63,13,67,2,67,9,71,1,6,71,75,2,75,9,79,1,79,5,83,2,83,13,87,1,9,87,91,1,13,91,95,1,2,95,99,1,99,6,0,99,2,14,0,0
|
Loading…
Reference in New Issue