From 50e089ec1d1948a8c08aee5af71990a5de02eee8 Mon Sep 17 00:00:00 2001 From: Ben Harris Date: Mon, 2 Dec 2019 01:00:53 -0500 Subject: [PATCH] day2 --- Day2.cs | 84 +++++++++++++++++++++++++++++++++++++++++++++++++++ Program.cs | 3 ++ input/day2.in | 1 + 3 files changed, 88 insertions(+) create mode 100644 Day2.cs create mode 100644 input/day2.in diff --git a/Day2.cs b/Day2.cs new file mode 100644 index 0000000..b6be148 --- /dev/null +++ b/Day2.cs @@ -0,0 +1,84 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; + +namespace aoc2019 +{ + public class Day2 + { + private static IEnumerable 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 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 output = input.ToList(); + output[1] = 12; + output[2] = 2; + + RunIntCode(ref output); + + Console.WriteLine($"{output[0]}"); + } + + public static void Part2() + { + List 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}"); + } + } + } + } + } +} + diff --git a/Program.cs b/Program.cs index a88bd9d..62d0cb1 100644 --- a/Program.cs +++ b/Program.cs @@ -10,6 +10,9 @@ namespace aoc2019 { Day1.Part1(); Day1.Part2(); + + Day2.Part1(); + Day2.Part2(); } } } diff --git a/input/day2.in b/input/day2.in new file mode 100644 index 0000000..c3ac93e --- /dev/null +++ b/input/day2.in @@ -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