abcaeffchen/sudoku-php

生成不同大小和难度的随机数独并检查解决方案。

资助包维护!
AbcAeffchen

1.1.0 2023-04-05 12:04 UTC

This package is auto-updated.

Last update: 2024-09-05 15:15:45 UTC


README

Unit Tests Latest Stable Version Total Downloads License

概述

生成不同大小和难度的随机数独并检查解决方案。功能

  • 选择以下大小:4,9,16,25,36。
  • 从五个难度级别中选择。
  • 数独可以通过整数种子重复生成。
  • 检查输入是否为任何数独的解决方案或特定任务的解决方案。
  • 解决数独。
  • 支持PHP 7.4至8.2(可能也支持PHP < 7.4,但这些版本不再受支持)
  • 仅后端,因此您可以按自己的喜好构建前端。

安装

您可以使用composer安装此包:

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

或者直接下载 Sudoku.php 文件并将其包含到您的项目中。请确保使用命名空间 AbcAeffchen\sudoku

如何使用

生成任务

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

生成标准9x9难度正常的数独。您可以使用难度级别 VERY_EASYEASYNORMALMEDIUMHARD

$task 包含一个二维整数数组,其中空白设置为 null。您可以使用

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

生成任务和可能的解决方案。也许可以提供提示?

通过提供种子可以重复生成数独。

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

这样,您就可以存储一个种子并在任何时间重复任务。
种子可以是任何正整数。

检查解决方案

您可以使用以下方法检查解决方案:

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

如果您还想要检查解决方案是否与任务相关,您可以像这样提供任务:

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

解决数独

此函数用于生成数独,但您也可以使用它来解决您手动生成(或从其他地方获取)的数独。

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

您只需确保,$task 是一个二维整数数组,只包含从1到大小的数字,所有空白都包含 null

许可

在LGPL v3.0许可证下授权。