Haskell - Sumes iguals P23927


Statement
 

pdf   zip

  1. Feu una funció sumEquals1 :: Int -> [Int] -> [[Int]] que, donat un enter ss i una llista d’enters xs, retorni totes les subllistes de xs que sumen ss.

  2. Feu una funció sumEquals2 :: Int -> [Int] -> Maybe [Int] que, donat un enter ss i una llista d’enters xs, retorni (possiblement) el subconjunt (amb repetits o no, però usant cada element de xs com a molt un cop) més gran (en ordre lexicogràfic) dels que tinguin suma ss amb els elements ordenats no creixentment.

  3. Feu una funció sumEquals3 :: Int -> [Int] -> [[Int]] que, donat un natural ss i una llista de naturals xs, retorni totes les subllistes de xs que sumen ss. Per aquesta funció, un algorisme molt simple pot ser massa lent.

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 33 punts. L’exemple puntua 1 punt.

Public test cases
  • Input

    sort $ sumEquals1 6 [1,(-2),0,3,(-4),5,1]
    sort $ sumEquals1 0 [(-5),5]
    sumEquals2 6 [1,6,0,1,3,2,0]
    sumEquals2 (-5) [6,(-10),4]
    sort $ sumEquals3 6 [1,6,0,1,3,0,2]
    sort $ sumEquals3 10 [1,1,1,1,1,1,1,1,1,1]
    

    Output

    [[-2,0,3,5],[-2,3,5],[0,5,1],[1,0,3,-4,5,1],[1,0,5],[1,3,-4,5,1],[1,5],[5,1]]
    [[],[-5,5]]
    Just [6,0,0]
    Nothing
    [[0,1,3,0,2],[0,1,3,2],[1,0,3,0,2],[1,0,3,2],[1,3,0,2],[1,3,0,2],[1,3,2],[1,3,2],[6],[6,0],[6,0],[6,0,0]]
    [[1,1,1,1,1,1,1,1,1,1]]
    
  • Information
    Author
    Jordi Petit
    Language
    Catalan
    Official solutions
    Haskell
    User solutions
    Haskell