Skip to content

Latest commit

 

History

History
103 lines (74 loc) · 5.25 KB

README.md

File metadata and controls

103 lines (74 loc) · 5.25 KB

DLX-Sudoku-Puzzle-Solver

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

Online Sudoku Solver

Table of Contents

  1. Introduction
  2. Features
  3. Technologies Used
  4. System Requirements
  5. Web-Based Solver
  6. Installation and Setup
  7. Usage
  8. Technical Implementation
  9. Acknowledgements

Screenshot 2023-12-19 214241

Introduction

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.

Features

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

Technologies Used

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

System Requirements

  • A modern web browser capable of running HTML5, CSS3, and JavaScript.
  • A C++ compiler for running the Sudoku solving algorithm.

Web-Based Solver:

  • 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

Installation and Setup

  1. Clone the repository: git clone [github.com/danieldotwav/dlxsudokusolver].
  2. Open the index.html file in a web browser to view the application.
  3. Compile the C++ code for the Sudoku solver algorithm.

Usage

Starting the Puzzle

Input numbers into the Sudoku grid to start a puzzle.

Using the Solver

Click the "Solve" button to trigger the solving algorithm.

Timer Functionality

The timer starts automatically when you begin the puzzle and pauses during solving.

Resetting the Puzzle

Use the "Reset" button to clear the grid and input a new puzzle.

Technical Implementation

Front-End Development (HTML/CSS/JavaScript)

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

Back-End Logic (C++)

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

Integration of Technologies

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

Event Handling and DOM Manipulation

  • JavaScript is used for responsive event handling and dynamic DOM manipulation, providing an engaging and interactive user experience.

Algorithmic Efficiency

  • The use of DLX not only emphasizes the project's computational efficiency but also highlights a deep understanding of advanced algorithmic techniques.

Acknowledgements