示例#1
0
        public static void Part_2()
        {
            // if a thruster halst, if it's not E, then just kick off the next one.
            // if E passes an output but not a halt, pass it to A


            int highestOutput = 0;

            List <int> phaseSettingSequence = new List <int>()
            {
                5, 6, 7, 8, 9
            };
            IEnumerable <IEnumerable <int> > possibilityList = Test_Code.GetPermutations(phaseSettingSequence, 5);

            foreach (var possibilities in possibilityList)
            {
                int[] first_numbers  = ReadData();
                int[] second_numbers = ReadData();
                int[] third_numbers  = ReadData();
                int[] fourth_numbers = ReadData();
                int[] fifth_numbers  = ReadData();

                List <int> asList   = possibilities.ToList();
                int        firstPS  = asList[0];
                int        secondPS = asList[1];
                int        thirdPS  = asList[2];
                int        fourthPS = asList[3];
                int        fifthPS  = asList[4];

                int[]       firstInput  = { firstPS, 0 };
                IntCodeComp FirstComp   = new IntCodeComp(first_numbers, firstInput);
                int         firstOutput = FirstComp.RunComputation();
                //Console.WriteLine($"First output is {firstOutput}");
                int[]       secondInput  = { secondPS, firstOutput };
                IntCodeComp SecondComp   = new IntCodeComp(second_numbers, secondInput);
                int         secondOutput = SecondComp.RunComputation();
                //Console.WriteLine($"Second output is {secondOutput}");
                int[]       thirdInput  = { thirdPS, secondOutput };
                IntCodeComp ThirdComp   = new IntCodeComp(third_numbers, thirdInput);
                int         thirdOutput = ThirdComp.RunComputation();
                //Console.WriteLine($"Third output is {thirdOutput}");
                int[]       fourthInput  = { fourthPS, thirdOutput };
                IntCodeComp FourthComp   = new IntCodeComp(fourth_numbers, fourthInput);
                int         fourthOutput = FourthComp.RunComputation();
                //Console.WriteLine($"Fourth output is {fourthOutput}");
                int[]       fifthInput  = { fifthPS, fourthOutput };
                IntCodeComp FifthComp   = new IntCodeComp(fifth_numbers, fifthInput);
                int         fifthOutput = FifthComp.RunComputation();

                if (fifthOutput > highestOutput)
                {
                    Console.WriteLine($"New highest output is {fifthOutput}");
                    highestOutput = fifthOutput;
                }
            }
        }
示例#2
0
        public static void Part_1()
        {
            int highestOutput = 0;

            List <int> phaseSettingSequence = new List <int>()
            {
                0, 1, 2, 3, 4
            };
            IEnumerable <IEnumerable <int> > possibilityList = Test_Code.GetPermutations(phaseSettingSequence, 5);

            foreach (var possibilities in possibilityList)
            {
                int[] first_numbers  = ReadData();
                int[] second_numbers = ReadData();
                int[] third_numbers  = ReadData();
                int[] fourth_numbers = ReadData();
                int[] fifth_numbers  = ReadData();

                List <int> asList   = possibilities.ToList();
                int        firstPS  = asList[0];
                int        secondPS = asList[1];
                int        thirdPS  = asList[2];
                int        fourthPS = asList[3];
                int        fifthPS  = asList[4];

                int[]       firstInput  = { firstPS, 0 };
                IntCodeComp FirstComp   = new IntCodeComp(first_numbers, firstInput);
                int         firstOutput = FirstComp.RunComputation();
                //Console.WriteLine($"First output is {firstOutput}");
                int[]       secondInput  = { secondPS, firstOutput };
                IntCodeComp SecondComp   = new IntCodeComp(second_numbers, secondInput);
                int         secondOutput = SecondComp.RunComputation();
                //Console.WriteLine($"Second output is {secondOutput}");
                int[]       thirdInput  = { thirdPS, secondOutput };
                IntCodeComp ThirdComp   = new IntCodeComp(third_numbers, thirdInput);
                int         thirdOutput = ThirdComp.RunComputation();
                //Console.WriteLine($"Third output is {thirdOutput}");
                int[]       fourthInput  = { fourthPS, thirdOutput };
                IntCodeComp FourthComp   = new IntCodeComp(fourth_numbers, fourthInput);
                int         fourthOutput = FourthComp.RunComputation();
                //Console.WriteLine($"Fourth output is {fourthOutput}");
                int[]       fifthInput  = { fifthPS, fourthOutput };
                IntCodeComp FifthComp   = new IntCodeComp(fifth_numbers, fifthInput);
                int         fifthOutput = FifthComp.RunComputation();

                if (fifthOutput > highestOutput)
                {
                    Console.WriteLine($"New highest output is {fifthOutput}");
                    highestOutput = fifthOutput;
                }
            }

            Console.WriteLine($"Final output is {highestOutput}");
        }