Un polinomio de coeficientes enteros se dirá par si todos sus coeficientes son números pares. Por ejemplo, el polinomio 2x³ – 4x² + 8 es par y el x² + 2x + 10 no lo es.
Definir el predicado
parPol :: Integral a => Polinomio a -> Bool |
tal que (parPol p) se verifica si p es un polinomio par. Por ejemplo,
ghci> parPol (consPol 3 2 (consPol 2 (-4) (consPol 0 8 polCero))) True ghci> parPol (consPol 2 1 (consPol 1 2 (consPol 0 10 polCero))) False |
Comprobar con QuickCheck que la suma de un polinomio con él mismo es un polinomio par.
Nota: Este ejercicio debe realizarse usando la librería I1M.Pol que se encuentra aquí y se describe aquí.
Soluciones
import I1M.PolOperaciones import Test.QuickCheck parPol :: Integral a => Polinomio a -> Bool parPol p = esPolCero p || (even (coefLider p) && parPol (restoPol p)) -- La propiedad es prop_parPol :: Integral a => Polinomio a -> Bool prop_parPol p = parPol (sumaPol p p) -- La comprobación es -- ghci> quickCheck prop_parPol -- +++ OK, passed 100 tests. |
3 Comments