Example #1
0
        public static SudokuPuzzleResultModel Search(SudokuPuzzle puzzle)
        {
            Steps.Clear();

            _stopwatch = new Stopwatch();
            _stopwatch.Start();

            if (puzzle.IsValidPuzzle() == false)
            {
                _stopwatch.Stop();

                return(new SudokuPuzzleResultModel
                {
                    ExecutionTime = _stopwatch.ElapsedMilliseconds,
                    IsValidPuzzle = false
                });
            }

            var result = Backtracking(puzzle);

            _stopwatch.Stop();

            return(new SudokuPuzzleResultModel
            {
                ExecutionTime = _stopwatch.ElapsedMilliseconds,
                Solution = result?.ToEnumerableValues().ToArray(),
                Steps = Steps.ToArray(),
                IsValidPuzzle = true,
                SolutionFound = result != null
            });
        }