frvaillant/dichotomic

该软件包旨在帮助用户轻松实现二分算法的解决方法。

v1.11 2020-10-23 07:54 UTC

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();