Skip to content

Generate random Sudokus of different size and difficulty and check the solution.

License

Notifications You must be signed in to change notification settings

zymeli/sudoku-php

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

sudoku-php

Build Status Latest Stable Version Total Downloads License

Genral

Generate random Sudokus of different size and difficulty and check the solution. Features:

  • Choose from the following sizes: 4, 9, 16, 25, 36.
  • Choose from fife degrees of difficulty.
  • Sudokus are reproducible via a integer seed.
  • Check if a input is a solution of any Sudoku or a solution to a specific task.
  • Solve Sudokus.
  • works with PHP 5.6 and 7.0 (maybe also with PHP < 5.6, but no one should use that old PHP versions)
  • backend only, so you can build your own frontend however you like it.

Installation

You can install this via composer using

{
    "require": {
        "abcaeffchen/sudoku-php": "~1.0.0"
    }
}

or just download the Sudoku.php file and include it to your project. Make sure to use the namespace AbcAeffchen\sudoku.

How to use

Generate a task

use AbcAeffchen\sudoku\Sudoku;
$task = Sudoku::generate(9, Sudoku::NORMAL);

Generates a standard 9x9 Sudoku with normal difficulty. You can use the difficulties VERY_EASY, EASY, NORMAL, MEDIUM, HARD.

$task contains a two dimensional array of integers, where the gaps are set to null. You can use

list($task,$solution) = Sudoku::generateWithSolution(9, Sudoku::NORMAL)

to generate a task and a possible solution. Maybe to give hints?

You can reproduce the Sudoku by providing a seed.

$seed = 0;
$task = Sudoku::generate(9, Sudoku::NORMAL, $seed);

This way cou could store a seed seed and reproduce the task at any time.
The seed can be any positive integer.

Check a solution

You can check a solution by using

if(Sudoku::checkSolution($solution))
{
    echo 'Nice done!';
}
else
{
    echo 'Try again!';
}

If you also want to also check if the solution relates to the task, you can just also provide the task like this:

if(Sudoku::checkSolution($solution,$task))
    ...

Solve Sudokus

This function is used to generate the Sudokus, but you can also use it to solve some you generated by hand (or get it from somewhere else).

$solution = Sudoku::solve($task);

You only have to make sure, that $task is a two dimensional int array containing only numbers from 1 to the size and all gaps contain null.

License

Licensed under the LGPL v3.0 License.

About

Generate random Sudokus of different size and difficulty and check the solution.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • PHP 100.0%