Aufzählen k-elementiger Teilmengen

Die Prozedur ListKSubsets(n,k) erzeugt alle k-elementigen Teilmengen der Menge {1,2,...,n}.

Verwendet werden hierbei die beiden Maplebefehle

op(y): entfernt die äußeren eckigen Klammer einer Liste und

map(f, y): wendet die Funktion f auf jedes Element der Liste y an.

> augment := (y,m) -> [op(y),m];

[Maple Math]

> ListKSubsets := proc(n,k)

> if n<0 or k<0 or k>n then RETURN([])

> elif n=0 or k=0 then RETURN([[]])

> else RETURN([op(ListKSubsets(n-1,k)), op(map(augment, ListKSubsets(n-1,k-1),n))]);

> fi;

> end;

[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]

> ListKSubsets(5,3);

[Maple Math]