此包最新版本(dev-master)没有提供许可证信息。

用于解决数独的小型库

dev-master 2014-03-24 21:28 UTC

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异常。