Skip to content
/ WASudoku Public

A Sudoku app that runs locally in your browser using WebAssembly

License

Notifications You must be signed in to change notification settings

h3nc4/WASudoku

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

325 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

WASudoku

WASudoku is a Sudoku solver that runs locally in your browser using WebAssembly.

Live

You can try WASudoku at: https://wasudoku.h3nc4.com via Cloudflare

Or at https://gh.wasudoku.h3nc4.com via GitHub Pages

Also available as a hidden service at: sudoku.h3nc4cd73utflolf2uxgws3j6rmgzotlwndukabzgzawpzk5fejws5id.onion

Features

Core Engine

  • WASM Solver: The solver logic is written in Rust and compiled to WebAssembly. It runs in a background Web Worker, ensuring the UI remains responsive during calculations.
  • Hybrid Solving Strategy: The engine first uses logical, human-like techniques to find a solution path. If logic alone is insufficient, it seamlessly falls back to a backtracking algorithm.
  • Puzzle Generation: Generates unique, solvable puzzles with a single solution for various difficulty levels (Easy, Medium, Hard, Extreme) directly in the browser.

User Interface & Experience

  • Responsive & Modern UI: Built with React, Vite, Tailwind CSS, and shadcn/ui for a clean, accessible, and responsive layout that works on any device.
  • Light & Dark Modes: Supports both light and dark themes.
  • Installable (PWA): As a Progressive Web App, WASudoku can be installed on your desktop or mobile device for a native, offline-first experience.
  • Local Storage Persistence: Your current board state, including all numbers, pencil marks, and undo/redo history, is automatically saved to your browser's local storage.

Gameplay Features

  • Solver Visualization: After a puzzle is solved, the interface reveals all logical steps the solver took. Navigate step-by-step to see the board's state at each stage and understand the reasoning behind each move.
  • Conflict Highlighting: The board highlights any numbers that break Sudoku rules in a row, column, or 3x3 box.
  • Undo/Redo: Step backward and forward through any moves.
  • Multiple Input Modes:
    • Normal: Enter the final numbers.
    • Candidate: Add small "corner" notes for potential numbers.
    • Center: Add "center" notes, used for advanced techniques.
  • Controls:
    • Navigation: Use arrow keys to navigate between cells, and Backspace/Delete to clear. Typing a number automatically advances focus to the next cell.
    • Number Pad: An on-screen number pad makes input easy on touch devices and displays a count of remaining numbers to be placed.
    • Clipboard Support: Paste an 81-character puzzle string directly onto the grid to start solving.
    • Export Puzzle: Copy the current puzzle state as an 81-character string for sharing or saving.

Architecture

The UI architecture follows the Context + Reducer Pattern with an emphasis on State Domain Isolation.

This is implemented using React's built-in useReducer and useContext hooks.

Stack

License

WASudoku is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

WASudoku is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along with WASudoku. If not, see https://www.gnu.org/licenses/.

About

A Sudoku app that runs locally in your browser using WebAssembly

Resources

License

Stars

Watchers

Forks

Contributors 4

  •  
  •  
  •  
  •