// [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)); }
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); }