static void Main(string[] args) { var baseIntCodes = Helper.ReadIntcodesFromInputFile(); var intCodeComputer = new IntcodeComputer(); for (int noun = 99; noun > 0; noun--) { for (int verb = 99; verb > 0; verb--) { //Console.WriteLine($"Processing - Noun: {noun}, Verb: {verb}"); var newIntCodes = new List <int>(baseIntCodes); newIntCodes[1] = noun; newIntCodes[2] = verb; var outputValues = intCodeComputer.ProcessIntcodes(newIntCodes); if (newIntCodes.First() == 19690720) { Console.WriteLine($"Answer: {noun}{verb}"); break; } } } Console.ReadLine(); }
static int CalculateMaxThrusters(List <int> baseIntCodes) { var phaseSettingsCombinations = GeneratePhaseSettingCombinations(5); var intCodeComputer = new IntcodeComputer(Version.V3); int maxSignal = int.MinValue; foreach (var phaseSettings in phaseSettingsCombinations) { var resultA = intCodeComputer.ProcessIntcodes(baseIntCodes, new Queue <int>(new int[] { phaseSettings.Dequeue(), 0 })).SingleOrDefault(); var resultB = intCodeComputer.ProcessIntcodes(baseIntCodes, new Queue <int>(new int[] { phaseSettings.Dequeue(), resultA })).SingleOrDefault(); var resultC = intCodeComputer.ProcessIntcodes(baseIntCodes, new Queue <int>(new int[] { phaseSettings.Dequeue(), resultB })).SingleOrDefault(); var resultD = intCodeComputer.ProcessIntcodes(baseIntCodes, new Queue <int>(new int[] { phaseSettings.Dequeue(), resultC })).SingleOrDefault(); var resultE = intCodeComputer.ProcessIntcodes(baseIntCodes, new Queue <int>(new int[] { phaseSettings.Dequeue(), resultD })).SingleOrDefault(); if (resultE > maxSignal) { maxSignal = resultE; } } return(maxSignal); }
static void Main(string[] args) { //var baseIntCodes = Helper.ReadIntcodesFromInputFile(); var baseIntCodes = new List <int> { 3, 3, 1105, -1, 9, 1101, 0, 0, 12, 4, 12, 99, 1 }; var intCodeComputer = new IntcodeComputer(Version.V3); var result = intCodeComputer.ProcessIntcodes(baseIntCodes); Console.ReadLine(); }