frvaillant / dichotomic
该软件包旨在帮助用户轻松实现二分算法的解决方法。
v1.11
2020-10-23 07:54 UTC
Requires
- php: >=7.0.0
This package is auto-updated.
Last update: 2024-09-23 16:48:18 UTC
README
如果您需要实现一个由一系列问题组成的算法,其中问题的回答是真或假,您可以使用算法解决器来帮助您实现其解决方法。
设置
composer require frvaillant/dichotomic
创建您的算法类
use Dichotomic\Resolver;
class BirdAlgo extends Resolver
{
}
创建代表您算法的数组
这是一个基本示例,用于确定一些鸟类的种类,通过回答几个问题:这只鸟有钩状喙吗?如果是,它是夜行性的吗?如果是,它是否有羽毛冠?如果不是,它是一只猫头鹰。
use Dichotomic\Resolver; class BirdAlgo extends Resolver { private $result; protected $algo = [ 'hasHookedBeak' => [ true => [ 'isNocturnal' => [ true => [ 'hasFeatherCrests' => [ true => 'ended:hibou', false => 'ended:chouette' ] ], false => [ 'hasPointedWings' => [ true => 'ended:faucon', false => 'ended:aigle' ] ] ] ], false => 'ended:null' ] ]; }
在BirdAlgo类中实现所有需要的函数
/** * NOTE : all the methods listed as key in $algo array must be implemented below */ protected function hasHookedBeak(): bool { return true; } protected function isNocturnal(): bool { return true; } protected function hasFeatherCrests(): bool { return false; } protected function hasPointedWings(): bool { return true; } protected function ended($result): void { $this->result = $result; } public function getResult() { return $this->result; }
创建index.php文件
$algo = new BirdAlgo(); $algo->execute(); echo $algo->getResult();