eugeniypetrov / sudoku
此包最新版本(dev-master)没有提供许可证信息。
用于解决数独的小型库
dev-master
2014-03-24 21:28 UTC
Requires
- php: >=5.4
This package is auto-updated.
Last update: 2024-09-22 00:14:48 UTC
README
数独解决库。使用示例
use \EugeniyPetrov\Sudoku; $sudoku = new Sudoku([ [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], ]); $sudoku->solve(); echo $sudoku;
结果将是
1 2 3 4 5 6 7 8 9
4 5 6 7 8 9 1 2 3
7 8 9 1 2 3 4 5 6
2 3 1 6 7 4 8 9 5
8 7 5 9 1 2 3 6 4
6 9 4 5 3 8 2 1 7
3 1 7 2 6 5 9 4 8
5 4 2 8 9 7 6 3 1
9 6 8 3 4 1 5 7 2
算法通过计算每个单元格可能数字的数量,并在数独未解决之前设置唯一可能的数字,直到数独解决。如果没有任何单元格只有一个可能的值,尝试递归地使用每个可能的值来解决数独。
如果数独没有解决方案,则抛出UnableToSolveException异常。