2.0.1 • Published 10 months ago

sudogame v2.0.1

Weekly downloads
-
License
MIT
Repository
github
Last release
10 months ago

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:
  npm install sudogame
  • With yarn:
  yarn add sudogame
  • With pnpm:
  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:

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:

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:

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.

2.0.1

10 months ago

2.0.0

10 months ago

1.1.3

10 months ago

1.1.2

10 months ago

1.1.1

11 months ago

1.1.0

11 months ago

0.0.0

5 years ago