Skip to content

SoftGridAlex/Sudoku-Solver---Backtracking

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 

Repository files navigation

Sudoku Solver - Backtracking Algorithm A powerful and efficient Sudoku solver implemented in C++ using the Recursive Backtracking technique. This program can solve any valid 9x9 Sudoku puzzle, from easy to expert levels, by exploring all possible solutions and navigating through the decision tree.

🚀 How it Works The solver uses a "brute-force with intelligence" approach called Backtracking:

Find an empty cell: The algorithm searches for the first cell containing a 0.

Attempt placements: It tries placing numbers from 1 to 9 in that cell.

Validation: For every number placed, it checks three mandatory Sudoku rules:

Row Uniqueness: The number must not already exist in the same row.

Column Uniqueness: The number must not already exist in the same column.

3x3 Grid Uniqueness: The number must not already exist in its specific 3x3 sub-grid.

Recursion: If the number is valid, it moves to the next empty cell.

Backtrack: If it hits a dead end (no numbers 1-9 work), it resets the current cell to 0 and goes back to the previous step to try a different possibility.

🛠️ Technical Features Language: C++

Paradigm: Procedural programming with recursion.

Optimization: Uses a fast validation check and stops immediately after the first solution is found to save CPU resources.

Memory Efficiency: Uses a minimal 2D array structure.

📖 How to Use Compilation: Use a C++ compiler like g++:

Bash : g++ -o sudoku_solver main.cpp

Input: Enter the 81 numbers of your Sudoku grid row by row. Use 0 for empty spaces. Input Example:

5 3 0 0 7 0 0 0 0 6 0 0 1 9 5 0 0 0 0 9 8 0 0 0 0 6 0 8 0 0 0 6 0 0 0 3 4 0 0 8 0 3 0 0 1 7 0 0 0 2 0 0 0 6 0 6 0 0 0 0 2 8 0 0 0 0 4 1 9 0 0 5 0 0 0 0 8 0 0 7 9

Return: 5 3 4 6 7 8 9 1 2 6 7 2 1 9 5 3 4 8 1 9 8 3 4 2 5 6 7 8 5 9 7 6 1 4 2 3 4 2 6 8 5 3 7 9 1 7 1 3 9 2 4 8 5 6 9 6 1 5 3 7 2 8 4 2 8 7 4 1 9 6 3 5 3 4 5 2 8 6 1 7 9

🧠 Lessons Learned While building this project, I deepened my understanding of:

Recursive Algorithms: Managing the function call stack and base cases.

Matrix Manipulation: Navigating 2D arrays and calculating sub-grid boundaries.

Logical Debugging: Handling edge cases where numbers validate themselves accidentally.

Developed as a study in algorithmic efficiency and problem-solving.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages