Download the PHP package xeeeveee/sudoku without Composer
On this page you can find all versions of the php package xeeeveee/sudoku. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download xeeeveee/sudoku
More information about xeeeveee/sudoku
Files in xeeeveee/sudoku
Package sudoku
Short Description PHP sudoku logic library - Generate and solve sudoku puzzles
License MIT
Homepage https://github.com/xeeeveee/sudoku
Informations about the package sudoku
PHP Sudoku Generator & Solver
A PHP Sudoku generate and solver implemented via a bruteforce backtracking algorithm.
Installation
Install via composer with php composer require xeeeveee/sudoku:*
Usage
TL;DR full examples
Generator
Once an instance has been initialized you can generate a new sudoku puzzle by calling the generatePuzzle()
method as below:
You can also specify the difficulty of the puzzle to generate by passing an integer between 0 and the maximum number of cells in the puzzle (81 for a 3*3 $cellSize
). This represents how many of the cells will be pre-populated in the puzzle. For example, the below snippet should generate a puzzle with 25 of the cells pre-populated.
Solver
Solving a puzzle is as simple as calling the solve()
method on the object, which will return either true
or false
depending on the outcome, see below for example:
You can use the isSolved()
method to check if the object contains a solved solution, and use the getSolution
method to retrieve the array, a more complete example might look like the below:
Puzzle & solution format
A standard ($cellSize
3) puzzle and solution is represented as 3 dimensional array, effectively 9 ($cellSize
* $cellSize
) rows with the same number of columns. Blank values are represented as 0
. The definition for a complete empty (`$cellSize 3) puzzle or solution would look like the below:
Performance notice
Due to the nature of the algorithm used to generate and solve puzzles, the execution time for these commands increases
exponentially as the $cellSize
used is increased, puzzles with a $cellSize
exceeding 4 will take an exceptionally
long time to solve on average.
Available methods
integer getCellSize()
Returns cell size of the puzzle.
boolean setCellSize()
Sets the cell size of the puzzle. Note - This will reset the $puzzle
and $solution
properties on the object.
integer getGridSize()
Returns cell size of the puzzle. Note - This is calculated based on the $cellSize
property.
array getPuzzle()
Returns the puzzle array.
boolean setPuzzle(array $puzzle = [])
Sets the puzzle array - If the $puzzle
parameter is omitted or an invalid array structure is pass, a empty grid will be generated and false will be returned.
Note - Setting the puzzle always resets the solution to an empty grid.
array getSolution()
Returns the solution array.
boolean setSolution(array $solution)
Sets the solution, if the $solution
parameter supplied is an invalid format false is returned and the solution is not modified.
boolean solve()
Attempts to solve the puzzle.
boolean isSolved()
Returns true if a the solution is valid for the current puzzle.
boolean isSolvable()
Returns true if the puzzle is solvable - This is significantly quicker then actually solving the puzzle.
boolean generatePuzzle($cellCount = 15)
Generates a new puzzle, the $cellCount
parameter specifies how many cells will be pre-populated, effectively manipulating the difficulty. 0 - 81 are valid values for $cellCount
if any other value is supplied false is returned.
Note - Generating a puzzle always resets the solution to an empty grid.