fabis94 / php-twiddle
将Chase的Twiddle算法重写成PHP,可以返回n个对象中所有m个对象的组合。
v2.0.0
2021-09-22 14:36 UTC
Requires
- php: ^7.4|^8.0
Requires (Dev)
- phpunit/phpunit: ^9
This package is not auto-updated.
Last update: 2024-09-19 04:54:59 UTC
README
Chase的Twiddle算法,用于返回大小为n的数组中所有m组合。有关原始算法的更多信息,请参阅此处,C语言的实现请参阅此处。
与其他用于构建组合的递归算法不同,这个算法允许你迭代地构建组合,因此可以在构建所有组合之前在任何时候停止,而无需先构建所有组合。此包提供了PHP的\Generator
和标准方法来检索
要求
PHP7.4 & PHP8
如何使用
以下代码将初始化一个新的Twiddle实例,用于构建大小为10的集合的2组合。
$setSize = 10; $combinationSize = 2; $twiddle = new Twiddle($setSize, $combinationSize);
初始化实例后,您可以对该大小为n
(示例中的10)的所有数组运行算法。
// Get all possible combinations $values = [1,2,3,4,5,6,7,8,9,0] $allCombinations = $twiddle->getAllCombinations($values); // Get first three combinations $values = ['a','b','c','d','e','f','g','h','j','k'] $combinationGenerator = $twiddle->getCombinationGenerator($values); $firstThree = []; $i = 0; foreach ($combinationGenerator as $combination) { if ($i >= 3) break; $firstThree[] = $combination; $i++; }
本地开发
运行docker-compose up -d
来运行docker环境。然后您可以通过SSH连接到PHP容器中的一个(一个有php7.4,另一个有php8.0)来运行composer
,tests
等:docker-compose exec php7 bash
或docker-compose exec php8 bash
代码库将被挂载到容器内的/app
目录。
在容器内运行测试,使用composer test
。