This project, available on GitHub, is a Python-based Sudoku solver that uses Depth First Search (DFS) and backtracking to efficiently solve Sudoku puzzles.

## Features

- Solves standard 9×9 Sudoku puzzles
- Utilizes DFS to explore valid number placements
- Can handle puzzles with unique solutions

## How does it work

The algorithm identifies empty cells in the Sudoku grid and tries placing numbers from 1 to 9 while adhering to Sudoku rules. If a number doesn’t fit, the algorithm backtracks and tries the next possible option. This process continues until the puzzle is solved or deemed unsolvable.

The project repository includes code for input/output handling, solution visualization, and a customizable callback function to track the solving process. The solver can be easily integrated into other projects or run standalone.

The code and documentation are available on GitHub for anyone interested in exploring or contributing to the project.

**Usage**

To resolve a Sudoku puzzle, you can use the `solve_sudoku`

function from the `sudoku_solver`

module. The function takes a Sudoku board as input and returns the solved board as output.

```
from time import sleep
from sudoku_io import read_board, write_board
from sudoku_printer import print_sudoku_and_solution
from sudoku_solver import solve_sudoku
def after_each_step_callback(solution: list[int]) -> None:
print_sudoku_and_solution(sudoku, solution)
sleep(0.005)
sudoku: list[int] = read_board("sample_data/sample_input.txt")
solution: list[int] = solve_sudoku(
sudoku,
after_each_step_callback=after_each_step_callback,
)
write_board("sample_data/sample_output.txt", solution)
```

You can specify a callback function to be called after each step of the solving process. This can be useful for visualizing the solving process or tracking the algorithm’s progress.

This project comes with a simple printer that displays the Sudoku board and the current solution in the console.

## Reply