Arrangements( mset )
Arrangements( mset, k )
NrArrangements( mset )
NrArrangements( mset, k )
In the first form Arrangements returns the set of arrangements of the
multiset mset. In the second form Arrangements returns the set of
all arrangements with k elements of the multiset mset.
In the first form NrArrangements returns the number of arrangements of
the multiset mset. In the second form NrArrangements returns the
number of arrangements with k elements of the multiset mset.
An arrangement of mset is an ordered selection without repetitions and is represented by a list that contains only elements from mset, but maybe in a different order. If mset is a proper set there are |mset|! / (|mset|-k)! (see Factorial) arrangements with k elements.
As an example of arrangements of a multiset, think of the game Scrabble.
Suppose you have the six characters of the word settle and you have to
make a four letter word. Then the possibilities are given by
gap> Arrangements( ["s","e","t","t","l","e"], 4 );
[ [ "e", "e", "l", "s" ], [ "e", "e", "l", "t" ],
[ "e", "e", "s", "l" ], [ "e", "e", "s", "t" ],
# 96 more possibilities
[ "t", "t", "s", "e" ], [ "t", "t", "s", "l" ] ]
Can you find the five proper English words, where lets does not count?
Note that the fact that the list returned by Arrangements is a proper
set means in this example that the possibilities are listed in the same
order as they appear in the dictionary.
gap> NrArrangements( ["s","e","t","t","l","e"] );
523
The function Combinations (see Combinations) computes unordered
selections without repetitions, UnorderedTuples (see UnorderedTuples)
computes unordered selections with repetitions and Tuples (see
Tuples) computes ordered selections with repetitions.
GAP 3.4.4