Simple PHP 8.3+ generators to create:
- combinations with or without repetition and
- permutations with or without repetition.
Install via Composer:
composer require blibio/combinatorics
To use the generators, simply create the kind of object you need, and iterate. E.g.:
<?php
declare(strict_types=1);
use Blibio\Combinatorics\Combinatorics;
$elements = ['A', 'B', 'C', 'D'];
$k = 3;
// Using the boolean parameter:
$it = Combinatorics::combinations($elements, $k, withRepetition: false);
// or:
// $it = Combinatorics::combinations($elements, $k, withRepetition: true);
// $it = Combinatorics::permutations($elements, $k, withRepetition: false);
// $it = Combinatorics::permutations($elements, $k, withRepetition: true);
// Using the explicit method names:
// $it = Combinatorics::combinationsWithoutRepetition($elements, $k);
// $it = Combinatorics::combinationsWithRepetition($elements, $k);
// $it = Combinatorics::permutationsWithoutRepetition($elements, $k);
// $it = Combinatorics::permutationsWithRepetition($elements, $k);
foreach ($it as $set) {
// use $set
}
The blibio/combinatorics library is copyright © Stephan Six and licensed for use under the MIT License (MIT). Please see LICENSE for more information.