A free web-based Sudoku game.
The front end currently consists of a simple web application that's designed to be easy to use on both mobile and desktop browsers. The user can begin play immediately, or create an account which allows them to track their play history and adjust their settings. Basic instructions and tips are provided, along with a form that allows the user to submit a help request. Users are encouraged to rate the puzzles based on expected difficulty to help adjust scoring methods behind the scenes.
The back end utilizes the Nancy framework with the Dapper library for streamlined access to a Postgresql database. It was recently migrated from Azure to a linux VM using .NET Core.
Puzzle generation and scoring is done offline via a console application. The process includes three different types of solvers. The console app was also migrated to .NET Core.
- Initial puzzles are generated via an algorithm based on Norvig. It's very fast at providing randomized solutions, but they're not guaranteed to have a single solution.
- A backtracking algorithm via Dancing Links is used to verify a unique starting problem (that is, one with a single solution).
- A custom solver that mimics a human is then used to help grade the difficulty of each puzzle. Each step is stored to assist future scoring adjustments.