Skip to content

Latest commit

 

History

History
138 lines (96 loc) · 6.34 KB

README.md

File metadata and controls

138 lines (96 loc) · 6.34 KB

Sudoku Visualizer

Sudoku-Visualizer



🎉 Welcome to the Sudoku Solver Visualizer! 🎉 This web-based app lets you visualize the solving process using backtracking. Features include 🔀 random puzzle generation, ⏩ variable solving speeds, and ✨ visual effects to celebrate a solved puzzle. Enjoy a fun and interactive Sudoku-solving experience!

📍Table of Contents

  1. Features
  2. Technology Stack
  3. Getting Started
  4. Web Application
  5. Usage
  6. Code Overview
  7. Contributing
  8. License
  9. Contact
  10. Links

✨Features

  • 🔢 Live Input Feedback: Receive real-time feedback as you input numbers into the Sudoku grid.
  • 🎨 Interactive UI: Engage with an intuitive and visually appealing user interface designed for ease of use.
  • 👌 Good UX: Enjoy a seamless user experience with smooth interactions and clear instructions.
  • ⚡ Fast Backtracking Algorithm: Solve Sudoku puzzles quickly and efficiently using an optimized backtracking algorithm.
  • 🌐 Cross-Platform: Access the Sudoku visualizer on both web and mobile platforms for convenience.
  • 🛠️ Customizable Settings: Tailor the visualization settings to your preferences, including solving speed and difficulty level.
  • 📚 Learn Mode: Understand the backtracking process step-by-step with an educational mode that explains each move when speed set to Xtra slow.

💻Technology Stack

JAVASCRIPT CSS5 HTML5

Getting Started

Prerequisites

  • Web browser (Google Chrome, Firefox, Safari, etc.)

Getting Started

  1. Clone the repository:

    git clone https://github.com/vansh-codes/Sudoku-Visualizer.git
  2. Navigate to the project directory:

    cd sudoku-visualizer
  3. Open index.html in your web browser to start using the application.

🌐Web Application

  1. Access here: Sudoku-Visualizer

Usage

  1. Clear Board: Click the "Clear" button to clear the Sudoku board.
  2. Generate Board: Click the "Generate Board" button to generate a new random Sudoku puzzle.
  3. Solve: Click the "Solve" button to start solving the puzzle using the selected algorithm and speed.
  4. Select Speed: Choose the speed of the solving animation from the dropdown menu (Fast, Medium, Slow, Extra Slow).
  5. Select Algorithm: Choose the algorithm for solving the puzzle from the dropdown menu (currently supports Backtracking).
  6. Enjoy the Visual Effects: Upon solving the puzzle, enjoy the fireworks effect celebrating your success.

Code Overview

HTML Elements

  • 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.
  • confetti: Configures the confetti for celebrating the solved puzzle.
  • algorithmsDropDown: Holds the current selected algorithm.
  • algorithmsOptions: List of all available algorithm options.

Speed Constants

Defines the different speeds for the solving animation:

  • FAST_SPEED: 0.4 seconds
  • MEDIUM_SPEED: 10 seconds
  • SLOW_SPEED: 50 seconds

Event Listeners

  • 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.

Main Functions

  • 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.

Utility Functions

  • 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.

Contributing

Contributions are welcome! Please fork the repository and submit a pull request for any enhancements or bug fixes.

License

This project is licensed under the MIT License. See the LICENSE file for details.

📞Contact

For any questions or feedback, please contact vansh-codes.

- Created by Vansh Chaurasiya

Show some ❤️ by starring this repository !

🔗Links

linkedin twitter

BACK TO TOP