fabis94/php-twiddle

将Chase的Twiddle算法重写成PHP,可以返回n个对象中所有m个对象的组合。

v2.0.0 2021-09-22 14:36 UTC

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)来运行composertests等:docker-compose exec php7 bashdocker-compose exec php8 bash

代码库将被挂载到容器内的/app目录。

在容器内运行测试,使用composer test