Iterator
PartitionFixedSize
generate some partitions of an integer
Calling Sequence
Parameters
Options
Description
Notes
Examples
References
Compatibility
PartitionFixedSize(n, m, opts)
n
-
nonnegint; integer to partition
m
(optional) nonnegint; number of parts
opts
(optional) equation(s) of the form option = value; specify options for the PartitionFixedSize command
maxparts = nonnegint
Specifies the maximum number of parts in each partition. Must be either 0 or greater than one. The default, 0, is ignored. When maxparts is used, some of the elements in the output may be zero.
parts = nonnegint
Specifies the number of parts in each partition. This option overrides the positional argument m; the default is m.
compile = truefalse
True means compile the iterator. The default is true.
The PartitionFixedSize command returns an iterator that generates all integer m-tuples, a1,…,am such that ak≥ak+1, am≥1, and ∑k=1m⁡ak=n.
The partitions are visited in colex order, that is, the reflected sequence am,…,a1 is in lexicographic order.
The n parameter specifies the integer to partition.
The m parameter specifies the size of the partition. The option parts may also be used to specify the number of parts.
Methods
In addition to the common iterator methods, this iterator object has the following methods. The self parameter is the iterator object.
Number(self): return the number of iterations required to step through the iterator, assuming it started at rank one.
The cost to run completely through this iterator is at most O⁡3⁢N⁡n,m+m, where N⁡n,m is the number of partitions of n of size m, cf. [1], theorem H, p. 50.
with⁡Iterator:
Construct an iterator to generate all 5-partitions of 12.
M≔PartitionFixedSize⁡12,parts=5:
Print⁡M,showrank:
1: 8 1 1 1 1 2: 7 2 1 1 1 3: 6 3 1 1 1 4: 5 4 1 1 1 5: 6 2 2 1 1 6: 5 3 2 1 1 7: 4 4 2 1 1 8: 4 3 3 1 1 9: 5 2 2 2 1 10: 4 3 2 2 1 11: 3 3 3 2 1 12: 4 2 2 2 2 13: 3 3 2 2 2
Extend the iterator to generate all partitions of 5 or less.
N≔Object⁡M,maxparts=5:
Print⁡N,showrank:
1: 12 0 0 0 0 2: 11 1 0 0 0 3: 10 2 0 0 0 4: 9 3 0 0 0 5: 8 4 0 0 0 6: 7 5 0 0 0 7: 6 6 0 0 0 8: 10 1 1 0 0 9: 9 2 1 0 0 10: 8 3 1 0 0 11: 7 4 1 0 0 12: 6 5 1 0 0 13: 8 2 2 0 0 14: 7 3 2 0 0 15: 6 4 2 0 0 16: 5 5 2 0 0 17: 6 3 3 0 0 18: 5 4 3 0 0 19: 4 4 4 0 0 20: 9 1 1 1 0 21: 8 2 1 1 0 22: 7 3 1 1 0 23: 6 4 1 1 0 24: 5 5 1 1 0 25: 7 2 2 1 0 26: 6 3 2 1 0 27: 5 4 2 1 0 28: 5 3 3 1 0 29: 4 4 3 1 0 30: 6 2 2 2 0 31: 5 3 2 2 0 32: 4 4 2 2 0 33: 4 3 3 2 0 34: 3 3 3 3 0 35: 8 1 1 1 1 36: 7 2 1 1 1 37: 6 3 1 1 1 38: 5 4 1 1 1 39: 6 2 2 1 1 40: 5 3 2 1 1 41: 4 4 2 1 1 42: 4 3 3 1 1 43: 5 2 2 2 1 44: 4 3 2 2 1 45: 3 3 3 2 1 46: 4 2 2 2 2 47: 3 3 2 2 2
1. Knuth, Donald Ervin. The Art of Computer Programming, volume 4, fascicle 3; generating all combinations and partitions, sec. 7.2.1.4, generating all partitions, algorithm H, partitions into m parts, p. 38, and p. 110, answer 2.
The Iterator[PartitionFixedSize] command was introduced in Maple 2016.
For more information on Maple 2016 changes, see Updates in Maple 2016.
The maxparts and parts options were introduced in Maple 2021.
For more information on Maple 2021 changes, see Updates in Maple 2021.
The Iterator[PartitionFixedSize] command was updated in Maple 2022.
The n and m parameters were updated in Maple 2022.
See Also
combinat[numbpart]
Iterator[Partition]
Iterator[SetPartitions]
Download Help Document