예제 #1
0
파일: Day7.cs 프로젝트: stefc/AoC
        //   [InlineData(18216, 97856,
        //   "3,52,1001,52,-5,52,3,53,1,52,56,54,1007,54,5,55,1005,55,26,1001,54,-5,54,1105,1,12,1,53,54,53,1008,54,0,55,1001,55,1,55,2,53,55,53,4,53,1001,56,-1,56,1005,56,6,99,0,0,0,0,10")]
        public void Feedback(long expected, int sequence, string program)
        {
            var prg      = ProgramAlarm.CreateProgram(program.ToBigNumbers());
            var computer = ProgramAlarm.CreateStateMaschine();

            var states = AmplificationCircuit.SetUpStates(prg, sequence);

            Assert.Equal(expected, computer.ComputeLoop(states, 0));
        }
예제 #2
0
파일: Day7.cs 프로젝트: stefc/AoC
        public void PuzzleTwo()
        {
            string input        = File.ReadAllText("tests/y2019/Day7.Input.txt");
            var    prg          = ProgramAlarm.CreateProgram(input.ToBigNumbers());
            var    computer     = ProgramAlarm.CreateStateMaschine();
            var    permutations = AmplificationCircuit
                                  .Permutate(56789.ToDigits()).ToList();

            var actual = permutations
                         .AsParallel()
                         .Select(sequence => AmplificationCircuit.SetUpStates(prg, sequence))
                         .Select(states => computer.ComputeLoop(states, 0))
                         .Max();

            Assert.Equal(33660560, actual);
        }