Popularity
2 Stars
Updated Last
1 Year Ago
Started In
August 2014

# Multicombinations.jl

An iterator for k-combinations with repetitions, k-multicombinations, k-multisubsets or whatever you want to call them.

## Installation

Install this package with `Pkg.clone("git://github.com/jlep/Multicombinations.jl")`

## Usage

• multichoose(n, k)

Return the number of multisets of length `k` on `n` symbols.

Examples

`multichoose(3,2)`

yields

``````6
``````
• multicombinations(xs, k)

Iterate over every `k`-size multisubset of a collection `xs`.

Example:

```for i in multicombinations([1,2,3],2)
@show i
end```

yields

``````i => [1,1]
i => [1,2]
i => [1,3]
i => [2,2]
i => [2,3]
i => [3,3]
``````
• integersums(n, k)

Iterate over every nonnegative integer solution of the equation: x1 + x2 + ... + xn = k.

The order in which the solutions are given corresponds to the order of subsets given by `multicombinations(xs, k)`.

Example:

```for i in integersums(3,2)
@show i
end```

yields

``````i => [2,0,0]
i => [1,1,0]
i => [1,0,1]
i => [0,2,0]
i => [0,1,1]
i => [0,0,2]
``````
• is2mc(s)

Convert a solution array given by `integersums(n, k)` to the corresponding multicombination index array.

Example:

```for i in integersums(3,2)
@show is2mc(i)
end```

yields

``````is2mc(i) => [1,1]
is2mc(i) => [1,2]
is2mc(i) => [1,3]
is2mc(i) => [2,2]
is2mc(i) => [2,3]
is2mc(i) => [3,3]
``````