Haskell - Sumes iguals P23927


Statement
 

pdf   zip

thehtml
  1. Feu una funció sumEquals1 :: Int -> [Int] -> [[Int]] que, donat un enter s i una llista d’enters xs, retorni totes les subllistes de xs que sumen s.
  2. Feu una funció sumEquals2 :: Int -> [Int] -> Maybe [Int] que, donat un enter s 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 s amb els elements ordenats no creixentment.
  3. Feu una funció sumEquals3 :: Int -> [Int] -> [[Int]] que, donat un natural s i una llista de naturals xs, retorni totes les subllistes de xs que sumen s. 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