Skip to content

0leksandr/combinator

Repository files navigation

Combinator

Service for generating collection of subsets from passed collection(s) (std::array or std::vector).

Example:

Combinator(std::vector<int>({1, 2, 3}), 2) ≈ {
    {1, 2},
    {1, 3},
    {2, 3},
};
Permutator(std::vector<int>({1, 2, 3}), 2) ≈ {
    {1, 2},
    {1, 3},
    {2, 1},
    {2, 3},
    {3, 1},
    {3, 2},
};
MultiPermutator(std::vector<int>({1, 2, 3}), 2) ≈ {
    {1, 1},
    {2, 1},
    {3, 1},
    {1, 2},
    {2, 2},
    {3, 2},
    {1, 3},
    {2, 3},
    {3, 3},
};
Cartesian(std::vector<std::vector<int>>({std::vector<int>{1, 2}, {3, 4}})) ≈ {
    {1, 3},    
    {2, 3},
    {1, 4},
    {2, 4},
};

Works as forward-iterator and random-access-iterator, thus allows to generate arbitrary big sequenses, requiring minimum amount of memory.

Accepts collections of any objects (integers are shows as example).

Returns sets of std::array or std::vector (required type should be declared as template argument, or will be deducted from input argument).

About

Generator of combinations

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published