Haskell - Multiconjunts P68862


Statement
 

pdf   zip

Aquest exercici explora la generació exhaustiva de multiconjunts.

  1. Feu una funció multisets1 :: Int -> Int -> [[Int]] que, donats dos naturals nn i xx, retorni tots els multiconjunts que es poden formar amb [1..n][1..n], de manera que cada nombre aparegui com a molt xx vegades.

  2. Feu una funció multisets2 :: Int -> Int -> Int -> [[Int]] que, donats tres naturals nn, xx i yy, retorni tots els multiconjunts que es poden formar amb [1..n][1..n], de manera que cada nombre aparegui entre xx i yy vegades.

  3. Feu una funció multisets3 :: Int -> Int -> [[Int]] que, donats dos naturals nn i tt, retorni tots els multiconjunts de tt nombres que es poden formar amb [1..n][1..n].

  4. Feu una funció multisets4 :: Int -> Int -> Int -> Int -> [[Int]] que, donats quatre naturals n,t,xn,t,x i yy, retorni tots els multiconjunts de tt nombres que es poden formar amb [1..n][1..n] de forma que cada nombre aparegui entre xx i yy vegades.

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.

Public test cases
  • 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]]
    
  • Information
    Author
    Jordi Petit
    Language
    Catalan
    Official solutions
    Haskell
    User solutions
    Haskell