Polinomios pares
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
1 |
parPol :: Integral a => Polinomio a -> Bool |
tal que (parPol p) se verifica si p es un polinomio par. Por ejemplo,
1 2 3 4 |
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
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. |