Aquest exercici explora la generació exhaustiva de multiconjunts.
Observació
Per tal que no importi l’ordre en que genereu la solució, els jocs de proves ordenen el resultat. Per a això, importeu la funció sort del mòdul Data.List encara que no la feu servir.
Puntuació
Cada funció puntua 25 punts.
Input
let msort xs = sort (map sort xs) msort $ multisets1 2 3 msort $ multisets2 2 1 4 msort $ multisets3 3 3 msort $ multisets4 3 1 4 6
Output
[[],[1],[1,1],[1,1,1],[1,1,1,2],[1,1,1,2,2],[1,1,1,2,2,2],[1,1,2],[1,1,2,2],[1,1,2,2,2],[1,2],[1,2,2],[1,2,2,2],[2],[2,2],[2,2,2]] [[1,1,1,1,2],[1,1,1,1,2,2],[1,1,1,1,2,2,2],[1,1,1,1,2,2,2,2],[1,1,1,2],[1,1,1,2,2],[1,1,1,2,2,2],[1,1,1,2,2,2,2],[1,1,2],[1,1,2,2],[1,1,2,2,2],[1,1,2,2,2,2],[1,2],[1,2,2],[1,2,2,2],[1,2,2,2,2]] [[1,1,1],[1,1,2],[1,1,3],[1,2,2],[1,2,3],[1,3,3],[2,2,2],[2,2,3],[2,3,3],[3,3,3]] [[1,1,1,1,2,3],[1,1,1,2,2,3],[1,1,1,2,3,3],[1,1,2,2,2,3],[1,1,2,2,3,3],[1,1,2,3,3,3],[1,2,2,2,2,3],[1,2,2,2,3,3],[1,2,2,3,3,3],[1,2,3,3,3,3]]