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()); }
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()); }
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); }
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); }