Example #1
0
        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);
        }