Application Center - Maplesoft

App Preview:

multichoose

You can switch back to the summary page by clicking here.

Learn about Maple
Download Application


Image 

multichoose 

 

Thomas Wieder
Germany, April 2010
thomas.wieder@t-online.de 

Introduction 

This worksheet demonstrates the use of the combinatorial subroutine multichoose. 

 

A multiset X is a set where multiple instances of an element x are allowed. In Maple, a multiset is represented as a list.  

E.g. X=[1,2,3,3,a] is a multiset since element x=3 occurs two times. Further below X is called ObjectList. 

A combination taken from a multiset is itself a multiset. In Maple, all combinations of cardinality k are drawn from X via the command choose. 

Often one speaks of a k-combination to emphasize the number of elements. E.g.  

 

 

> choose([1,2,3,3,a],2);

 

 

 

[[1, 2], [1, 3], [1, a], [2, 3], [2, a], [3, 3], [3, a]]

 

 

A multicombination drawn from a multiset is a set of combinations for a list of cardinalities. 

The list of cardinalities [k1,k2,...] is called SelectionList below. 

One could speak of a [k1,k2,...]-combination. E.g. for ObjectList = [1,2,3,3,a] and SelectionList = [3,2] one has from multichoose 

 

 

> multichoose([1,2,3,3,a],[3,2]);

 

 

 

[[[1, 2, 3], [3, a]], [[1, 2, a], [3, 3]], [[1, 3, 3], [2, a]], [[1, 3, a], [2, 3]], [[2, 3, 3], [1, a]], [[2, 3, a], [1, 3]], [[3, 3, a], [1, 2]]]
[[[1, 2, 3], [3, a]], [[1, 2, a], [3, 3]], [[1, 3, 3], [2, a]], [[1, 3, a], [2, 3]], [[2, 3, 3], [1, a]], [[2, 3, a], [1, 3]], [[3, 3, a], [1, 2]]]

 

Implementation 

multichoose solves its task by recursive calls. 

 

Two internal parameters restrict the allowed lengthes of ObjectList and SelectionList, namely  

If the internal parameter iverbose is set equal to one, then some debugging information will be displayed. 

Initialization 

 

with(combinat); -1 

read  

 

 

 

 

 

proc (`::`(Liste1, list), `::`(Liste2, list)) local iverbose, ReduzierteListe1, ReduzierteListe2, ElementInListe2, Auswahl, Unterliste, WeitereAuswahlen, Resultat, L?ngeListe1Max, L?ngeListe2Max, L?ng...
proc (`::`(Liste1, list), `::`(Liste2, list)) local iverbose, ReduzierteListe1, ReduzierteListe2, ElementInListe2, Auswahl, Unterliste, WeitereAuswahlen, Resultat, L?ngeListe1Max, L?ngeListe2Max, L?ng...
proc (`::`(Liste1, list), `::`(Liste2, list)) local iverbose, ReduzierteListe1, ReduzierteListe2, ElementInListe2, Auswahl, Unterliste, WeitereAuswahlen, Resultat, L?ngeListe1Max, L?ngeListe2Max, L?ng...
proc (`::`(Liste1, list), `::`(Liste2, list)) local iverbose, ReduzierteListe1, ReduzierteListe2, ElementInListe2, Auswahl, Unterliste, WeitereAuswahlen, Resultat, L?ngeListe1Max, L?ngeListe2Max, L?ng...
proc (`::`(Liste1, list), `::`(Liste2, list)) local iverbose, ReduzierteListe1, ReduzierteListe2, ElementInListe2, Auswahl, Unterliste, WeitereAuswahlen, Resultat, L?ngeListe1Max, L?ngeListe2Max, L?ng...
proc (`::`(Liste1, list), `::`(Liste2, list)) local iverbose, ReduzierteListe1, ReduzierteListe2, ElementInListe2, Auswahl, Unterliste, WeitereAuswahlen, Resultat, L?ngeListe1Max, L?ngeListe2Max, L?ng...
proc (`::`(Liste1, list), `::`(Liste2, list)) local iverbose, ReduzierteListe1, ReduzierteListe2, ElementInListe2, Auswahl, Unterliste, WeitereAuswahlen, Resultat, L?ngeListe1Max, L?ngeListe2Max, L?ng...
proc (`::`(Liste1, list), `::`(Liste2, list)) local iverbose, ReduzierteListe1, ReduzierteListe2, ElementInListe2, Auswahl, Unterliste, WeitereAuswahlen, Resultat, L?ngeListe1Max, L?ngeListe2Max, L?ng...
proc (`::`(Liste1, list), `::`(Liste2, list)) local iverbose, ReduzierteListe1, ReduzierteListe2, ElementInListe2, Auswahl, Unterliste, WeitereAuswahlen, Resultat, L?ngeListe1Max, L?ngeListe2Max, L?ng...
proc (`::`(Liste1, list), `::`(Liste2, list)) local iverbose, ReduzierteListe1, ReduzierteListe2, ElementInListe2, Auswahl, Unterliste, WeitereAuswahlen, Resultat, L?ngeListe1Max, L?ngeListe2Max, L?ng...
proc (`::`(Liste1, list), `::`(Liste2, list)) local iverbose, ReduzierteListe1, ReduzierteListe2, ElementInListe2, Auswahl, Unterliste, WeitereAuswahlen, Resultat, L?ngeListe1Max, L?ngeListe2Max, L?ng...
proc (`::`(Liste1, list), `::`(Liste2, list)) local iverbose, ReduzierteListe1, ReduzierteListe2, ElementInListe2, Auswahl, Unterliste, WeitereAuswahlen, Resultat, L?ngeListe1Max, L?ngeListe2Max, L?ng...
proc (`::`(Liste1, list), `::`(Liste2, list)) local iverbose, ReduzierteListe1, ReduzierteListe2, ElementInListe2, Auswahl, Unterliste, WeitereAuswahlen, Resultat, L?ngeListe1Max, L?ngeListe2Max, L?ng...
proc (`::`(Liste1, list), `::`(Liste2, list)) local iverbose, ReduzierteListe1, ReduzierteListe2, ElementInListe2, Auswahl, Unterliste, WeitereAuswahlen, Resultat, L?ngeListe1Max, L?ngeListe2Max, L?ng...
proc (`::`(Liste1, list), `::`(Liste2, list)) local iverbose, ReduzierteListe1, ReduzierteListe2, ElementInListe2, Auswahl, Unterliste, WeitereAuswahlen, Resultat, L?ngeListe1Max, L?ngeListe2Max, L?ng...
proc (`::`(Liste1, list), `::`(Liste2, list)) local iverbose, ReduzierteListe1, ReduzierteListe2, ElementInListe2, Auswahl, Unterliste, WeitereAuswahlen, Resultat, L?ngeListe1Max, L?ngeListe2Max, L?ng...
proc (`::`(Liste1, list), `::`(Liste2, list)) local iverbose, ReduzierteListe1, ReduzierteListe2, ElementInListe2, Auswahl, Unterliste, WeitereAuswahlen, Resultat, L?ngeListe1Max, L?ngeListe2Max, L?ng...
proc (`::`(Liste1, list), `::`(Liste2, list)) local iverbose, ReduzierteListe1, ReduzierteListe2, ElementInListe2, Auswahl, Unterliste, WeitereAuswahlen, Resultat, L?ngeListe1Max, L?ngeListe2Max, L?ng...
proc (`::`(Liste1, list), `::`(Liste2, list)) local iverbose, ReduzierteListe1, ReduzierteListe2, ElementInListe2, Auswahl, Unterliste, WeitereAuswahlen, Resultat, L?ngeListe1Max, L?ngeListe2Max, L?ng...
proc (`::`(Liste1, list), `::`(Liste2, list)) local iverbose, ReduzierteListe1, ReduzierteListe2, ElementInListe2, Auswahl, Unterliste, WeitereAuswahlen, Resultat, L?ngeListe1Max, L?ngeListe2Max, L?ng...
proc (`::`(Liste1, list), `::`(Liste2, list)) local iverbose, ReduzierteListe1, ReduzierteListe2, ElementInListe2, Auswahl, Unterliste, WeitereAuswahlen, Resultat, L?ngeListe1Max, L?ngeListe2Max, L?ng...
proc (`::`(Liste1, list), `::`(Liste2, list)) local iverbose, ReduzierteListe1, ReduzierteListe2, ElementInListe2, Auswahl, Unterliste, WeitereAuswahlen, Resultat, L?ngeListe1Max, L?ngeListe2Max, L?ng...
proc (`::`(Liste1, list), `::`(Liste2, list)) local iverbose, ReduzierteListe1, ReduzierteListe2, ElementInListe2, Auswahl, Unterliste, WeitereAuswahlen, Resultat, L?ngeListe1Max, L?ngeListe2Max, L?ng...
proc (`::`(Liste1, list), `::`(Liste2, list)) local iverbose, ReduzierteListe1, ReduzierteListe2, ElementInListe2, Auswahl, Unterliste, WeitereAuswahlen, Resultat, L?ngeListe1Max, L?ngeListe2Max, L?ng...
proc (`::`(Liste1, list), `::`(Liste2, list)) local iverbose, ReduzierteListe1, ReduzierteListe2, ElementInListe2, Auswahl, Unterliste, WeitereAuswahlen, Resultat, L?ngeListe1Max, L?ngeListe2Max, L?ng...
proc (`::`(Liste1, list), `::`(Liste2, list)) local iverbose, ReduzierteListe1, ReduzierteListe2, ElementInListe2, Auswahl, Unterliste, WeitereAuswahlen, Resultat, L?ngeListe1Max, L?ngeListe2Max, L?ng...
proc (`::`(Liste1, list), `::`(Liste2, list)) local iverbose, ReduzierteListe1, ReduzierteListe2, ElementInListe2, Auswahl, Unterliste, WeitereAuswahlen, Resultat, L?ngeListe1Max, L?ngeListe2Max, L?ng...
proc (`::`(Liste1, list), `::`(Liste2, list)) local iverbose, ReduzierteListe1, ReduzierteListe2, ElementInListe2, Auswahl, Unterliste, WeitereAuswahlen, Resultat, L?ngeListe1Max, L?ngeListe2Max, L?ng...
proc (`::`(Liste1, list), `::`(Liste2, list)) local iverbose, ReduzierteListe1, ReduzierteListe2, ElementInListe2, Auswahl, Unterliste, WeitereAuswahlen, Resultat, L?ngeListe1Max, L?ngeListe2Max, L?ng...
proc (`::`(Liste1, list), `::`(Liste2, list)) local iverbose, ReduzierteListe1, ReduzierteListe2, ElementInListe2, Auswahl, Unterliste, WeitereAuswahlen, Resultat, L?ngeListe1Max, L?ngeListe2Max, L?ng...
proc (`::`(Liste1, list), `::`(Liste2, list)) local iverbose, ReduzierteListe1, ReduzierteListe2, ElementInListe2, Auswahl, Unterliste, WeitereAuswahlen, Resultat, L?ngeListe1Max, L?ngeListe2Max, L?ng...
proc (`::`(Liste1, list), `::`(Liste2, list)) local iverbose, ReduzierteListe1, ReduzierteListe2, ElementInListe2, Auswahl, Unterliste, WeitereAuswahlen, Resultat, L?ngeListe1Max, L?ngeListe2Max, L?ng...
proc (`::`(Liste1, list), `::`(Liste2, list)) local iverbose, ReduzierteListe1, ReduzierteListe2, ElementInListe2, Auswahl, Unterliste, WeitereAuswahlen, Resultat, L?ngeListe1Max, L?ngeListe2Max, L?ng...
proc (`::`(Liste1, list), `::`(Liste2, list)) local iverbose, ReduzierteListe1, ReduzierteListe2, ElementInListe2, Auswahl, Unterliste, WeitereAuswahlen, Resultat, L?ngeListe1Max, L?ngeListe2Max, L?ng...
proc (`::`(Liste1, list), `::`(Liste2, list)) local iverbose, ReduzierteListe1, ReduzierteListe2, ElementInListe2, Auswahl, Unterliste, WeitereAuswahlen, Resultat, L?ngeListe1Max, L?ngeListe2Max, L?ng...
proc (`::`(Liste1, list), `::`(Liste2, list)) local iverbose, ReduzierteListe1, ReduzierteListe2, ElementInListe2, Auswahl, Unterliste, WeitereAuswahlen, Resultat, L?ngeListe1Max, L?ngeListe2Max, L?ng...
proc (`::`(Liste1, list), `::`(Liste2, list)) local iverbose, ReduzierteListe1, ReduzierteListe2, ElementInListe2, Auswahl, Unterliste, WeitereAuswahlen, Resultat, L?ngeListe1Max, L?ngeListe2Max, L?ng...
proc (`::`(Liste1, list), `::`(Liste2, list)) local iverbose, ReduzierteListe1, ReduzierteListe2, ElementInListe2, Auswahl, Unterliste, WeitereAuswahlen, Resultat, L?ngeListe1Max, L?ngeListe2Max, L?ng...
proc (`::`(Liste, list), `::`(ListeDerWeiterenListen, list), `::`(iverbose, integer)) local ul, NeueListe, WeitereListe; try if ListeDerWeiterenListen = [] then `assign`(NeueListe, Liste); return [Neu...
proc (`::`(Liste, list), `::`(ListeDerWeiterenListen, list), `::`(iverbose, integer)) local ul, NeueListe, WeitereListe; try if ListeDerWeiterenListen = [] then `assign`(NeueListe, Liste); return [Neu...
proc (`::`(Liste, list), `::`(ListeDerWeiterenListen, list), `::`(iverbose, integer)) local ul, NeueListe, WeitereListe; try if ListeDerWeiterenListen = [] then `assign`(NeueListe, Liste); return [Neu...
proc (`::`(Liste, list), `::`(ListeDerWeiterenListen, list), `::`(iverbose, integer)) local ul, NeueListe, WeitereListe; try if ListeDerWeiterenListen = [] then `assign`(NeueListe, Liste); return [Neu...
proc (`::`(Liste, list), `::`(ListeDerWeiterenListen, list), `::`(iverbose, integer)) local ul, NeueListe, WeitereListe; try if ListeDerWeiterenListen = [] then `assign`(NeueListe, Liste); return [Neu...
proc (`::`(Liste, list), `::`(ListeDerWeiterenListen, list), `::`(iverbose, integer)) local ul, NeueListe, WeitereListe; try if ListeDerWeiterenListen = [] then `assign`(NeueListe, Liste); return [Neu...
proc (`::`(Liste, list), `::`(ListeDerWeiterenListen, list), `::`(iverbose, integer)) local ul, NeueListe, WeitereListe; try if ListeDerWeiterenListen = [] then `assign`(NeueListe, Liste); return [Neu...
proc (`::`(Liste, list), `::`(ListeDerWeiterenListen, list), `::`(iverbose, integer)) local ul, NeueListe, WeitereListe; try if ListeDerWeiterenListen = [] then `assign`(NeueListe, Liste); return [Neu...
proc (`::`(Liste, list), `::`(ListeDerWeiterenListen, list), `::`(iverbose, integer)) local ul, NeueListe, WeitereListe; try if ListeDerWeiterenListen = [] then `assign`(NeueListe, Liste); return [Neu...
proc (`::`(Liste, list), `::`(ListeDerWeiterenListen, list), `::`(iverbose, integer)) local ul, NeueListe, WeitereListe; try if ListeDerWeiterenListen = [] then `assign`(NeueListe, Liste); return [Neu...
proc (`::`(Liste, list), `::`(ListeDerWeiterenListen, list), `::`(iverbose, integer)) local ul, NeueListe, WeitereListe; try if ListeDerWeiterenListen = [] then `assign`(NeueListe, Liste); return [Neu...
proc (`::`(Liste, list), `::`(ListeDerWeiterenListen, list), `::`(iverbose, integer)) local ul, NeueListe, WeitereListe; try if ListeDerWeiterenListen = [] then `assign`(NeueListe, Liste); return [Neu...
proc (`::`(Liste, list), `::`(ListeDerWeiterenListen, list), `::`(iverbose, integer)) local ul, NeueListe, WeitereListe; try if ListeDerWeiterenListen = [] then `assign`(NeueListe, Liste); return [Neu...
proc (`::`(Liste, list), `::`(ListeDerWeiterenListen, list), `::`(iverbose, integer)) local ul, NeueListe, WeitereListe; try if ListeDerWeiterenListen = [] then `assign`(NeueListe, Liste); return [Neu...
proc (`::`(Liste, list), `::`(ListeDerWeiterenListen, list), `::`(iverbose, integer)) local ul, NeueListe, WeitereListe; try if ListeDerWeiterenListen = [] then `assign`(NeueListe, Liste); return [Neu...
proc (`::`(Liste, list), `::`(ListeDerWeiterenListen, list), `::`(iverbose, integer)) local ul, NeueListe, WeitereListe; try if ListeDerWeiterenListen = [] then `assign`(NeueListe, Liste); return [Neu...
proc (`::`(Liste, list), `::`(ListeDerWeiterenListen, list), `::`(iverbose, integer)) local ul, NeueListe, WeitereListe; try if ListeDerWeiterenListen = [] then `assign`(NeueListe, Liste); return [Neu...
proc (`::`(Liste, list), `::`(ListeDerWeiterenListen, list), `::`(iverbose, integer)) local ul, NeueListe, WeitereListe; try if ListeDerWeiterenListen = [] then `assign`(NeueListe, Liste); return [Neu...
proc (`::`(Liste, list), `::`(ListeDerWeiterenListen, list), `::`(iverbose, integer)) local ul, NeueListe, WeitereListe; try if ListeDerWeiterenListen = [] then `assign`(NeueListe, Liste); return [Neu...
proc (`::`(Liste, list), `::`(ListeDerWeiterenListen, list), `::`(iverbose, integer)) local ul, NeueListe, WeitereListe; try if ListeDerWeiterenListen = [] then `assign`(NeueListe, Liste); return [Neu...
proc (`::`(Liste, list), `::`(ListeDerWeiterenListen, list), `::`(iverbose, integer)) local ul, NeueListe, WeitereListe; try if ListeDerWeiterenListen = [] then `assign`(NeueListe, Liste); return [Neu...
proc (`::`(Liste, list), `::`(Unterliste, list)) local lmnt, ElementUnterliste, NeueListe; try `assign`(NeueListe, Liste); for ElementUnterliste in Unterliste do for lmnt to nops(NeueListe) do if op(l...
proc (`::`(Liste, list), `::`(Unterliste, list)) local lmnt, ElementUnterliste, NeueListe; try `assign`(NeueListe, Liste); for ElementUnterliste in Unterliste do for lmnt to nops(NeueListe) do if op(l...
proc (`::`(Liste, list), `::`(Unterliste, list)) local lmnt, ElementUnterliste, NeueListe; try `assign`(NeueListe, Liste); for ElementUnterliste in Unterliste do for lmnt to nops(NeueListe) do if op(l...
proc (`::`(Liste, list), `::`(Unterliste, list)) local lmnt, ElementUnterliste, NeueListe; try `assign`(NeueListe, Liste); for ElementUnterliste in Unterliste do for lmnt to nops(NeueListe) do if op(l...
proc (`::`(Liste, list), `::`(Unterliste, list)) local lmnt, ElementUnterliste, NeueListe; try `assign`(NeueListe, Liste); for ElementUnterliste in Unterliste do for lmnt to nops(NeueListe) do if op(l...
proc (`::`(Liste, list), `::`(Unterliste, list)) local lmnt, ElementUnterliste, NeueListe; try `assign`(NeueListe, Liste); for ElementUnterliste in Unterliste do for lmnt to nops(NeueListe) do if op(l...
proc (`::`(Liste, list), `::`(Unterliste, list)) local lmnt, ElementUnterliste, NeueListe; try `assign`(NeueListe, Liste); for ElementUnterliste in Unterliste do for lmnt to nops(NeueListe) do if op(l...
proc (`::`(Liste, list), `::`(Unterliste, list)) local lmnt, ElementUnterliste, NeueListe; try `assign`(NeueListe, Liste); for ElementUnterliste in Unterliste do for lmnt to nops(NeueListe) do if op(l...
proc (`::`(Liste, list), `::`(Unterliste, list)) local lmnt, ElementUnterliste, NeueListe; try `assign`(NeueListe, Liste); for ElementUnterliste in Unterliste do for lmnt to nops(NeueListe) do if op(l...
proc (`::`(Liste, list), `::`(Unterliste, list)) local lmnt, ElementUnterliste, NeueListe; try `assign`(NeueListe, Liste); for ElementUnterliste in Unterliste do for lmnt to nops(NeueListe) do if op(l...
proc (`::`(Liste, list), `::`(Unterliste, list)) local lmnt, ElementUnterliste, NeueListe; try `assign`(NeueListe, Liste); for ElementUnterliste in Unterliste do for lmnt to nops(NeueListe) do if op(l...
proc (`::`(Liste, list), `::`(Unterliste, list)) local lmnt, ElementUnterliste, NeueListe; try `assign`(NeueListe, Liste); for ElementUnterliste in Unterliste do for lmnt to nops(NeueListe) do if op(l...
proc (`::`(Liste, list), `::`(Unterliste, list)) local lmnt, ElementUnterliste, NeueListe; try `assign`(NeueListe, Liste); for ElementUnterliste in Unterliste do for lmnt to nops(NeueListe) do if op(l...
proc (`::`(Liste, list), `::`(Unterliste, list)) local lmnt, ElementUnterliste, NeueListe; try `assign`(NeueListe, Liste); for ElementUnterliste in Unterliste do for lmnt to nops(NeueListe) do if op(l...
proc (`::`(Liste, list), `::`(Unterliste, list)) local lmnt, ElementUnterliste, NeueListe; try `assign`(NeueListe, Liste); for ElementUnterliste in Unterliste do for lmnt to nops(NeueListe) do if op(l...
proc (`::`(Liste, list), `::`(Unterliste, list)) local lmnt, ElementUnterliste, NeueListe; try `assign`(NeueListe, Liste); for ElementUnterliste in Unterliste do for lmnt to nops(NeueListe) do if op(l...
proc (`::`(Liste, list), `::`(Unterliste, list)) local lmnt, ElementUnterliste, NeueListe; try `assign`(NeueListe, Liste); for ElementUnterliste in Unterliste do for lmnt to nops(NeueListe) do if op(l...
(3.1)

 

Calling Sequence 

multichoose(ObjectList,SelectionList); 

Parameters 

 

ObjectList 

list of objects where multiple instances of the same object are allowed, thus ObjectList is a multiset 

SelectionList 

list of non-negativ integers 

 

Description 

 

  • multichoose returns a list of multicombinations of the list elements.  A multicombination is a list of combinations. The number of elements of each combination is determined by SelectionList.
 

 

 

  • If SelectionList contains just one single integer n, then multichoose returns the combinations of the multiset ObjectList like the command choose.
 

 

Examples 

 

> `assign`(ObjectList, [1, 2, 3, 3, a]); 1; `assign`(SelectionList, [1, 1, 1]); 1; `assign`(Result, multichoose(ObjectList, SelectionList)); 1; nops(Result); 1
`assign`(ObjectList, [1, 2, 3, 3, a]); 1; `assign`(SelectionList, [1, 1, 1]); 1; `assign`(Result, multichoose(ObjectList, SelectionList)); 1; nops(Result); 1

 

 

 

 

 

 

 

 

[1, 2, 3, 3, a]
[1, 1, 1]
[[[1], [[2], [3]]], [[1], [[2], [a]]], [[1], [[3], [2]]], [[1], [[3], [3]]], [[1], [[3], [a]]], [[1], [[a], [2]]], [[1], [[a], [3]]], [[2], [[1], [3]]], [[2], [[1], [a]]], [[2], [[3], [1]]], [[2], [[3...
[[[1], [[2], [3]]], [[1], [[2], [a]]], [[1], [[3], [2]]], [[1], [[3], [3]]], [[1], [[3], [a]]], [[1], [[a], [2]]], [[1], [[a], [3]]], [[2], [[1], [3]]], [[2], [[1], [a]]], [[2], [[3], [1]]], [[2], [[3...
[[[1], [[2], [3]]], [[1], [[2], [a]]], [[1], [[3], [2]]], [[1], [[3], [3]]], [[1], [[3], [a]]], [[1], [[a], [2]]], [[1], [[a], [3]]], [[2], [[1], [3]]], [[2], [[1], [a]]], [[2], [[3], [1]]], [[2], [[3...
[[[1], [[2], [3]]], [[1], [[2], [a]]], [[1], [[3], [2]]], [[1], [[3], [3]]], [[1], [[3], [a]]], [[1], [[a], [2]]], [[1], [[a], [3]]], [[2], [[1], [3]]], [[2], [[1], [a]]], [[2], [[3], [1]]], [[2], [[3...
[[[1], [[2], [3]]], [[1], [[2], [a]]], [[1], [[3], [2]]], [[1], [[3], [3]]], [[1], [[3], [a]]], [[1], [[a], [2]]], [[1], [[a], [3]]], [[2], [[1], [3]]], [[2], [[1], [a]]], [[2], [[3], [1]]], [[2], [[3...
[[[1], [[2], [3]]], [[1], [[2], [a]]], [[1], [[3], [2]]], [[1], [[3], [3]]], [[1], [[3], [a]]], [[1], [[a], [2]]], [[1], [[a], [3]]], [[2], [[1], [3]]], [[2], [[1], [a]]], [[2], [[3], [1]]], [[2], [[3...
[[[1], [[2], [3]]], [[1], [[2], [a]]], [[1], [[3], [2]]], [[1], [[3], [3]]], [[1], [[3], [a]]], [[1], [[a], [2]]], [[1], [[a], [3]]], [[2], [[1], [3]]], [[2], [[1], [a]]], [[2], [[3], [1]]], [[2], [[3...
33 (7.1)

 

 

>

 

 

 

 

 

 

 

 

[1, 2, 3, 3, a]
[1, 2]
[[[1], [2, 3]], [[1], [2, a]], [[1], [3, 3]], [[1], [3, a]], [[2], [1, 3]], [[2], [1, a]], [[2], [3, 3]], [[2], [3, a]], [[3], [1, 2]], [[3], [1, 3]], [[3], [1, a]], [[3], [2, 3]], [[3], [2, a]], [[3]...
[[[1], [2, 3]], [[1], [2, a]], [[1], [3, 3]], [[1], [3, a]], [[2], [1, 3]], [[2], [1, a]], [[2], [3, 3]], [[2], [3, a]], [[3], [1, 2]], [[3], [1, 3]], [[3], [1, a]], [[3], [2, 3]], [[3], [2, a]], [[3]...
[[[1], [2, 3]], [[1], [2, a]], [[1], [3, 3]], [[1], [3, a]], [[2], [1, 3]], [[2], [1, a]], [[2], [3, 3]], [[2], [3, a]], [[3], [1, 2]], [[3], [1, 3]], [[3], [1, a]], [[3], [2, 3]], [[3], [2, a]], [[3]...
18 (7.2)

 

 

>

 

 

 

 

 

 

 

 

[1, 2, 3, 3, a]
[3]
[[1, 2, 3], [1, 2, a], [1, 3, 3], [1, 3, a], [2, 3, 3], [2, 3, a], [3, 3, a]]
7 (7.3)

 

 

>

 

 

 

 

 

 

 

 

[1, 2, 3, 3, a]
[2, 2]
[[[1, 2], [3, 3]], [[1, 2], [3, a]], [[1, 3], [2, 3]], [[1, 3], [2, a]], [[1, 3], [3, a]], [[1, a], [2, 3]], [[1, a], [3, 3]], [[2, 3], [1, 3]], [[2, 3], [1, a]], [[2, 3], [3, a]], [[2, a], [1, 3]], [...
[[[1, 2], [3, 3]], [[1, 2], [3, a]], [[1, 3], [2, 3]], [[1, 3], [2, a]], [[1, 3], [3, a]], [[1, a], [2, 3]], [[1, a], [3, 3]], [[2, 3], [1, 3]], [[2, 3], [1, a]], [[2, 3], [3, a]], [[2, a], [1, 3]], [...
[[[1, 2], [3, 3]], [[1, 2], [3, a]], [[1, 3], [2, 3]], [[1, 3], [2, a]], [[1, 3], [3, a]], [[1, a], [2, 3]], [[1, a], [3, 3]], [[2, 3], [1, 3]], [[2, 3], [1, a]], [[2, 3], [3, a]], [[2, a], [1, 3]], [...
18 (7.4)

 

 

>

 

 

 

 

 

 

 

 

[1, 2, 3, 3, a]
[10]
[]
0 (7.5)

 

 

>

 

 

 

 

 

 

 

 

[1, 2, 3, 3, a]
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
Error, (in multichoose) multichoose: Too long second list.
0 (7.6)

 

 

>

 

 

>

 

 

>

 

 

>

 

 

3, 7, 13, 21, 31, 43, 57 (7.7)

 

References 

none 

See Also 

combinat[choose]  

 

 

Legal Notice: ? Maplesoft, a division of Waterloo Maple Inc. 2010. Maplesoft and Maple are trademarks of Waterloo Maple Inc. Neither Maplesoft nor the authors are responsible for any errors contained within and are not liable for any damages resulting from the use of this material.  This application is intended for non-commercial, non-profit use only. Contact the authors for permission if you wish to use this application in for-profit activities.