daVaxi/takuzu

PHP类,用于逐步检查和解决Takuzu网格

1.0.8 2016-09-23 21:00 UTC

This package is auto-updated.

Last update: 2024-09-13 21:22:36 UTC


README

PHP类,用于逐步(带解释)检查和解决Takuzu网格。

Build Status Latest Stable Version Total Downloads Latest Unstable Version License Code Climate Test Coverage Issue Count

游戏

Takuzu是一种基于逻辑的数字放置谜题。目标是填充一个(通常是10×10)的网格,其中1s和0s的数量相等,每一行和每一列中1s和0s的数量相等,且相邻的任何两个数字的数量不超过两个。此外,行和列不能有相同的模式。

来源:维基百科

解决方法

  • 每一行和每一列都应该包含相同数量的0s和1s。如果在行或列中达到了所需的0s或1s数量,则剩余的单元格应包含另一个数字。(1xx101 - 100101)

  • 相同的数字不能相邻超过两个。如果相邻的两个单元格包含相同的数字,则这些数字旁边的单元格应包含另一个数字。(xxx00x - xx1001)如果两个单元格包含相同的数字,中间有一个空单元格,则该空单元格应包含另一个数字,因为否则会出现三个相同的数字。(x1x1xx - x101xx)

  • 每一行和每一列都是唯一的。(100101 1001xx - 100101 100110)

  • 消除不可能的组合。例如,110xxx,第6个单元格应包含0,否则会出现三联组(110xx1 - 110001)

安装

本页包含有关安装PHP库的信息。

要求

  • PHP版本5.4.0或更高版本

获取客户端库

获取客户端库文件有两种选择。

使用Composer

您可以通过将库作为依赖项添加到composer.json中来安装库。

  "require": {
    "davaxi/takuzu": "^1.0"
  }

从GitHub克隆

库可在GitHub上找到。您可以使用git clone命令将其克隆到本地仓库中。

git clone https://github.com/davaxi/Takuzu.git

如何处理文件

获取文件后,请确保它们可用于您的代码。如果您使用Composer,这将自动为您处理。如果您不这样做,则需要将客户端库中的autoload.php文件添加到项目中。

require '/path/to/takuzu/folder/autoload.php';

示例

<?php

// ...

$grid = new \Davaxi\Takuzu\Grid();
$grid->setGridFromString(
    "1..1...0..\n" .
    "..0.1....1\n" .
    "......0.01\n" .
    "..00......\n" .
    ".....1..0.\n" .
    ".....1.1..\n" .
    "..0.0...0.\n" .
    "1.....00.0\n" .
    "..1.0.0.0.\n" .
    "0.1.1...01"
);

$resolver = new \Davaxi\Takuzu\Resolver($grid);
$resolver->resolve();

$resolvedGrid = $resolver->getResolvedGrid();