Ejemplo n.º 1
0
        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();
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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();
        }