This Sudoku Solver project is an interactive web application designed to solve Sudoku puzzles. It combines HTML, CSS, JavaScript, and C++ to create a user-friendly interface for inputting puzzles, a timer to track solving time, and an efficient algorithm to solve the puzzles.
Click on the link below, enter a Sudoku puzzle, and use the solve feature. The web-based application also supports random puzzle generation, offering three tiers of difficulty
- Introduction
- Features
- Technologies Used
- System Requirements
- Web-Based Solver
- Installation and Setup
- Usage
- Technical Implementation
- Acknowledgements
This repository contains the DLX Sudoku Solver, an advanced Sudoku puzzle solver implementing Donald Knuth's Dancing Links Algorithm. This project not only allows for solving traditional Sudoku puzzles but also offers a unique, interactive experience through its web-based interface.
- Sophisticated Sudoku Solver: Employs Donald Knuth's Dancing Links algorithm for efficient puzzle solving.
- Interactive User Interface: Easy-to-use web interface for inputting and solving puzzles.
- Timer Functionality: Tracks time spent on solving puzzles, enhancing the user experience.
- Reset and New Puzzle Options: Allows users to start new puzzles or reset the current puzzle easily.
- HTML: For structuring the web application's content.
- CSS: For styling the application, including the Sudoku grid and buttons.
- JavaScript: To add interactivity, manage the timer, and handle user inputs.
- C++: Used for implementing the Sudoku solving algorithm.
- A modern web browser capable of running HTML5, CSS3, and JavaScript.
- A C++ compiler for running the Sudoku solving algorithm.
- Interactive Solver: Enter Sudoku puzzles manually or paste pre-filled grids.
- Automatic Solution: Solves puzzles instantly and indicates if no solution exists.
- Modern UI: Aesthetically pleasing interface with intuitive design and responsive layout.
- Cross-Platform Compatibility: Accessible through any modern web browser
- Clone the repository:
git clone [github.com/danieldotwav/dlxsudokusolver]
. - Open the
index.html
file in a web browser to view the application. - Compile the C++ code for the Sudoku solver algorithm.
Input numbers into the Sudoku grid to start a puzzle.
Click the "Solve" button to trigger the solving algorithm.
The timer starts automatically when you begin the puzzle and pauses during solving.
Use the "Reset" button to clear the grid and input a new puzzle.
- HTML/CSS: Structured and styled the web application, including the interactive Sudoku grid.
- JavaScript: Handles user input, manages the puzzle state, and interacts with the C++ solver.
- Dancing Links Algorithm (DLX): The core of the Sudoku solver uses Donald Knuth's Dancing Links algorithm, a highly efficient method for solving exact cover problems which in this case is applied to Sudoku. This showcases the application of complex algorithmic concepts in a practical scenario.
- C++ Implementation: The DLX algorithm is implemented in C++, known for its efficiency, making the solver both fast and reliable.
- The application demonstrates a seamless integration of web technologies (HTML, CSS, JavaScript) with advanced C++ programming, highlighting the capability to bridge front-end interactivity with back-end computational power.
- JavaScript is used for responsive event handling and dynamic DOM manipulation, providing an engaging and interactive user experience.
- The use of DLX not only emphasizes the project's computational efficiency but also highlights a deep understanding of advanced algorithmic techniques.
- Donald Knuth for the Dancing Links Algorithm For a detailed explanation of the underlying algorithm, refer to the research paper: Efficient Algorithm for Sudoku Solving using Dancing Links.