https://github.com/trongtai37/sudogame
A new fast, light and comprehensive Sudoku library, powered by SAT encoding!
https://github.com/trongtai37/sudogame
minisat sudoku sudoku-game sudoku-generator sudoku-solver
Last synced: 2 months ago
JSON representation
A new fast, light and comprehensive Sudoku library, powered by SAT encoding!
- Host: GitHub
- URL: https://github.com/trongtai37/sudogame
- Owner: trongtai37
- Created: 2023-07-07T14:44:18.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2023-07-29T07:23:45.000Z (almost 2 years ago)
- Last Synced: 2025-03-08T05:36:13.050Z (2 months ago)
- Topics: minisat, sudoku, sudoku-game, sudoku-generator, sudoku-solver
- Language: TypeScript
- Homepage: https://sudogame.vercel.app
- Size: 946 KB
- Stars: 2
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Sudogame
✨ **A new fast, light and comprehensive Sudoku library, powered by SAT encoding!** ✨
`sudogame` is a fast, light, and comprehensive Sudoku library powered by SAT encoding. With Sudogame, you can quickly and easily generate, solve, and validate Sudoku puzzles in your own projects.
## Features
- Fast and efficient Sudoku generation and solving algorithms
- Support for puzzles of all sizes, including standard 9x9 puzzles and larger grids
- Comprehensive validation and error checking to ensure the correctness of generated puzzles
- Built-in support for SAT solvers to enable even faster puzzle generation and solving## Installation
- With `npm`:
```bash
npm install sudogame
```- With `yarn`:
```bash
yarn add sudogame
```- With `pnpm`:
```bash
pnpm add sudogame
```## Usage
### Speed solver
The `SpeedSolver` class provides a fast and efficient algorithm for solving Sudoku puzzles. Here's an example of how to use it:
```ts
import { SpeedSolver } from 'sudogame';// Create a new 9x9 Sudoku puzzle
const puzzle = [
[5, 3, 0, 0, 7, 0, 0, 0, 0],
[6, 0, 0, 1, 9, 5, 0, 0, 0],
[0, 9, 8, 0, 0, 0, 0, 6, 0],
[8, 0, 0, 0, 6, 0, 0, 0, 3],
[4, 0, 0, 8, 0, 3, 0, 0, 1],
[7, 0, 0, 0, 2, 0, 0, 0, 6],
[0, 6, 0, 0, 0, 0, 2, 8, 0],
[0, 0, 0, 4, 1, 9, 0, 0, 5],
[0, 0, 0, 0, 8, 0, 0, 7, 9],
];// Solve the puzzle using the SpeedSolver
const solver = new SpeedSolver({ size: 3 });
const result = solver.solve(puzzle);
// {
// question: [
// [5, 3, 0, 0, 7, 0, 0, 0, 0],
// [6, 0, 0, 1, 9, 5, 0, 0, 0],
// [0, 9, 8, 0, 0, 0, 0, 6, 0],
// [8, 0, 0, 0, 6, 0, 0, 0, 3],
// [4, 0, 0, 8, 0, 3, 0, 0, 1],
// [7, 0, 0, 0, 2, 0, 0, 0, 6],
// [0, 6, 0, 0, 0, 0, 2, 8, 0],
// [0, 0, 0, 4, 1, 9, 0, 0, 5],
// [0, 0, 0, 0, 8, 0, 0, 7, 9],
// ],
// solution: [
// [5, 3, 4, 6, 7, 8, 9, 1, 2 ],
// [6, 7, 2, 1, 9, 5, 3, 4, 8 ],
// [1, 9, 8, 3, 4, 2, 5, 6, 7 ],
// [8, 5, 9, 7, 6, 1, 4, 2, 3 ],
// [4, 2, 6, 8, 5, 3, 7, 9, 1 ],
// [7, 1, 3, 9, 2, 4, 8, 5, 6 ],
// [9, 6, 1, 5, 3, 7, 2, 8, 4 ],
// [2, 8, 7, 4, 1, 9, 6, 3, 5 ],
// [3, 4, 5, 2, 8, 6, 1, 7, 9 ]
// ]
// }s
```### Lazy Solver
The `LazySolver` class is designed to find all possible solutions of the puzzle. Here's an example of how to use it:
```ts
import { LazySolver } from 'sudogame';const puzzle = [
[5, 3, 0, 0, 7, 0, 0, 0, 0],
[6, 0, 0, 1, 9, 5, 0, 0, 0],
[0, 9, 8, 0, 0, 0, 0, 6, 0],
[8, 0, 0, 0, 6, 0, 0, 0, 3],
[4, 0, 0, 8, 0, 3, 0, 0, 1],
[7, 0, 0, 0, 2, 0, 0, 0, 6],
[0, 6, 0, 0, 0, 0, 2, 8, 0],
[0, 0, 0, 4, 1, 9, 0, 0, 5],
[0, 0, 0, 0, 8, 0, 0, 7, 9],
];const solver = new LazySolver({ size: 3, clues: puzzle });
const resultGenerator = solver.generator;
for (const result of resultGenerator) {
console.log(result);
}
```### Generator
The `Generator` class provides a way to generate new Sudoku puzzles. Here's an example of how to use it:
```ts
import { Generator } from 'sudogame';// Generate a new 9x9 Sudoku puzzle
const generator = new Generator(3);
console.log(generator.make());
```## License
`sudogame` is licensed under the MIT License. See the LICENSE file for more information.