예제 #1
0
파일: Day7.cs 프로젝트: stefc/AoC
        public void TestNewPermutation()
        {
            var permutation = AmplificationCircuit.Permutate(56789.ToDigits());

            Assert.Equal(120, permutation.Count());
            Assert.Equal(permutation.Count(), permutation.Distinct().Count());
            Assert.Equal(56789, permutation.Min());
            Assert.Equal(98765, permutation.Max());
        }
예제 #2
0
파일: Day7.cs 프로젝트: stefc/AoC
        public void TestPermutation(int n, int count, int min, int max)
        {
            var permutation = AmplificationCircuit.Permutate(n);

            Assert.Equal(count, permutation.Count());
            Assert.Equal(permutation.Count(), permutation.Distinct().Count());
            Assert.Equal(min, permutation.Min());
            Assert.Equal(max, permutation.Max());
        }
예제 #3
0
파일: Day7.cs 프로젝트: stefc/AoC
        public void PuzzleOne()
        {
            string input    = File.ReadAllText("tests/y2019/Day7.Input.txt");
            var    prg      = ProgramAlarm.CreateProgram(input.ToBigNumbers());
            var    computer = ProgramAlarm.CreateStateMaschine();
            var    actual   = AmplificationCircuit.Permutate(5)
                              .AsParallel()
                              .Select(sequence => computer.Compute(prg, sequence, 10000, 0))
                              .Max();

            Assert.Equal(38500, actual);
        }
예제 #4
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);
        }