public ulong FindNumberThatIsNotSumOfKPreviousNumbers(IPuzzleSolverDay1 helpingSolver, List <ulong> numbers, int k) { var summmingNumbers = numbers.Take(k).ToList(); foreach (var number in numbers.Skip(k)) { var result = helpingSolver.GetNumbersThatSumToN(summmingNumbers, number); if (result.Count == 0) { return(number); } summmingNumbers.RemoveAt(0); summmingNumbers.Add(number); } throw new Exception("All numbers are good."); }
public void ShouldNot_FindNumberThatIsNotSumOfKPreviousNumbers(List <ulong> numbers, int k, IPuzzleSolverDay1 mock) { var solver = new PuzzleSolverDay9(); Assert.Throws <Exception>(() => solver.FindNumberThatIsNotSumOfKPreviousNumbers(mock, numbers, k)); }
public void Should_FindNumberThatIsNotSumOfKPreviousNumbers(List <ulong> numbers, int k, IPuzzleSolverDay1 mock, ulong expected) { var solver = new PuzzleSolverDay9(); var result = solver.FindNumberThatIsNotSumOfKPreviousNumbers(mock, numbers, k); Assert.Equal(expected, result); }