Haskell - Multiplicació de polinomis P41691


Statement
 

pdf   zip

thehtml

Feu una funció mult :: [Double] -> [Double] -> [Double] que, donats dos polinomis, en calculi el seu producte. Els polinomis es representen a través de llistes que corresponen als seus coeficients. Per exemple, la llista [3.5,−2,6,1] representa el polinomi 3.5−2x+6x2+x3.

Els dos polinomis a multiplicar sempre tindràn el mateix nombre de coeficients, diguem-ne n. Aquest n serà sempre una potència de dos. El resultat ha de ser un nou polinomi amb 2n coeficients.

Per tal d’evitar problemes de precisió, els jocs de proves arrodoneixen els valors reals a k decimals amb la funció myRound k.

Puntuació

  • test-1:  ‍ Entrades amb n petita.  ‍20 Punts ‍
  • test-2:  ‍ Entrades amb n gran.  ‍80 Punts ‍
Public test cases
  • Input

    let myRound k f = (fromInteger $ round $ f * (10^k)) / (10.0^^k)
    map (myRound 2) $ mult [2,1] [3,-2]
    map (myRound 2) $ mult [2,1,0,0] [3,-2,0,0]
    map (myRound 2) $ mult [3.5,-2,6,1] [3.5,-2,6,1]
    map (myRound 2) $ mult [1,2,3,4,5,6,7,8] [0,0,0,0,1,0,0,0]
    

    Output

    [6.0,-1.0,-2.0,0.0]
    [6.0,-1.0,-2.0,0.0,0.0,0.0,0.0,0.0]
    [12.25,-14.0,46.0,-17.0,32.0,12.0,1.0,0.0]
    [0.0,0.0,0.0,0.0,1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,0.0,0.0,0.0,0.0]
    
  • Information
    Author
    Jordi Petit
    Language
    Catalan
    Official solutions
    Haskell
    User solutions
    Haskell