Multicombination Constructor (Int32, Int32, Int64) |
Namespace: Kaos.Combinatorics
public Multicombination( int choices, int picks, long rank )
Exception | Condition |
---|---|
ArgumentOutOfRangeException | When negative value supplied; when choices is 0 and picks is not 0. |
OverflowException | When too many choices. |
Supplying a value for choices that is greater than picks will instantiate a k-multicombination also known as a k-combination with repetition.
If the supplied rank is out of the range (0..RowCount-1), it will be normalized to the valid range. For example, a value of -1 will produce the last row in the ordered table.
using System; using System.Linq; using Kaos.Combinatorics; namespace ExampleApp { class McExample05 { static void Main() { // Create a k-multicombination: var mc = new Multicombination (choices:9, picks:7, rank:5973); Console.WriteLine ($"n={mc.Choices}, k={mc.Picks}, rank={mc.Rank}:\n"); // Access elements using the default enumerator: var text = String.Concat (mc.Select (ei => (char) ('A' + ei))); Console.WriteLine ($"{text}\n"); // Access elements using the indexer: for (int i = 0; i < mc.Picks; ++i) Console.WriteLine ($"Element at {i} is {mc[i]}"); } /* Output: n=9, k=7, rank=5973: DEFFFHI Element at 0 is 3 Element at 1 is 4 Element at 2 is 5 Element at 3 is 5 Element at 4 is 5 Element at 5 is 7 Element at 6 is 8 */ } }