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