Welcome to the Sudoku Solver Visualizer! This project is a web-based application that allows you to visualize the process of solving Sudoku puzzles using different algorithms. It includes features like random puzzle generation, various solving speeds, and visual effects to celebrate a solved puzzle.
- Random Puzzle Generation: Generate a new Sudoku puzzle with a single click.
- Speed Control: Choose from different solving speeds (Fast, Medium, Slow, Extra Slow).
- Algorithm Selection: Select different algorithms to solve the Sudoku (currently supports Backtracking).
- Visual Effects: Enjoy visual effects like fireworks upon successfully solving a puzzle.
- Interactive Board: Click on cells to input your own Sudoku puzzle.
- Web browser (Google Chrome, Firefox, Safari, etc.)
-
Clone the repository:
git clone https://github.com/your-username/sudoku-solver-visualizer.git
-
Navigate to the project directory:
cd sudoku-solver-visualizer
-
Open
index.html
in your web browser to start using the application.
- Clear Board: Click the "Clear" button to clear the Sudoku board.
- Randomly Fill: Click the "Randomly Fill" button to generate a new random Sudoku puzzle.
- Solve: Click the "Solve" button to start solving the puzzle using the selected algorithm and speed.
- Select Speed: Choose the speed of the solving animation from the dropdown menu (Fast, Medium, Slow, Extra Slow).
- Select Algorithm: Choose the algorithm for solving the puzzle from the dropdown menu (currently supports Backtracking).
- Enjoy the Visual Effects: Upon solving the puzzle, enjoy the fireworks effect celebrating your success.
subMenu
: Refers to the submenu element inside the navigation bar.speedButton
: Refers to the button for selecting speed inside the navigation bar.speedDropDown
: Holds the current selected speed.speedOptions
: List of all available speed options.fireworks
: Configures the fireworks effect for celebrating the solved puzzle.algorithmsDropDown
: Holds the current selected algorithm.algorithmsOptions
: List of all available algorithm options.
Defines the different speeds for the solving animation:
FAST_SPEED
: 0.4 secondsMEDIUM_SPEED
: 10 secondsSLOW_SPEED
: 50 secondsEXTRA_SLOW_SPEED
: 150 seconds
clear.addEventListener('click', clickedClear)
: Clears the board.randomlyFill.addEventListener('click', clickedRandomlyFill)
: Fills the board with a random puzzle.solve.addEventListener('click', clickedSolve)
: Starts solving the puzzle.
clickedClear(e)
: Clears the board and resets the state.clickedRandomlyFill(e)
: Clears the board and fills it with a random puzzle.clickedSolve(e)
: Starts the solving process.solveByBacktracking(algo)
: Solves the puzzle using the Backtracking algorithm.backtracking(matrix, algo)
: Initializes and runs the backtracking algorithm.backtrackingHelper(matrix, isFixed, i, j, data, algo)
: Recursively solves the puzzle using backtracking.
getFixedEntries(matrix)
: Returns an array indicating which entries are fixed.canBeCorrect(matrix, i, j)
: Checks if the current state of the board is valid.allBoardNonZero(matrix)
: Checks if all cells in the board are filled.readValue()
: Reads the current values from the Sudoku board.
Contributions are welcome! Please fork the repository and submit a pull request for any enhancements or bug fixes.
This project is licensed under the MIT License. See the LICENSE file for details.
- fireworks.js: Library used for the fireworks effect.
Enjoy solving and visualizing Sudoku puzzles!