creatortsv/combination-iterator

v1.0.3 2023-01-23 15:05 UTC

This package is auto-updated.

Last update: 2024-11-12 15:34:26 UTC


README

CI

Installation

The only thing has to be done

composer install creatortsv/combination-iterator

Usage

Searching for pin code combination for example

use Creatortsv\CombinationIterator\CombinationLengthIterator;
use Creatortsv\CombinationIterator\CombinationIterator;

$codeIterator = new CombinationIterator(
    range(0, 9),
    range(0, 9),
    range(0, 9),
    range(0, 9),
);

// The same as ...

$codeIterator = new CombinationLengthIterator(
    iterator: new CombinationIterator(range(0, 9)),
    length: 4,
);

print_r($codeIterator->count()); // prints 10000 total combinations
print_r($codeIterator->length); // prints 4

foreach ($codeIterator as $combination) {
    // Search matching of [#, #, #, #] symbols pin code ...
    //        for example [3, 5, 9, 7]
}

Executing some actions on each element

// ... use

$functions = [
    static fn (int $n) => print_r('first execution for ' . $n),
    static fn (int $n) => print_r('second execution for ' . $n),
];

foreach (new CombinationIterator([1, 2, 3], $functions) as [$number, $function]) {
    $function($number);
}

// prints ...
// first execution for 1
// second execution for 1
// the same for the 2 and 3 ...

It works with any iterable objects

$iterator = new CombinationIterator(
    new RecursiveArrayIterator([1, [2, 3], 4]),
    new MyOwnMagicIterator(),
);