TAD de los polinomios: Divisibilidad de polinomios
Usando el tipo abstracto de los polinomios, definir la función
1 2 |
divisiblePol :: (Fractional a, Eq a) => Polinomio a -> Polinomio a -> Bool |
tal que divisiblePol p q
se verifica si el polinomio p
es divisible por el polinomio q
. Por ejemplo,
1 2 3 4 5 6 7 8 9 10 11 12 13 |
λ> pol1 = consPol 2 8 (consPol 1 14 (consPol 0 3 polCero)) λ> pol1 8*x^2 + 14*x + 3 λ> pol2 = consPol 1 2 (consPol 0 3 polCero) λ> pol2 2*x + 3 λ> pol3 = consPol 2 6 (consPol 1 2 polCero) λ> pol3 6*x^2 + 2*x λ> divisiblePol pol1 pol2 True λ> divisiblePol pol1 pol3 False |
Soluciones
A continuación se muestran las soluciones en Haskell y las soluciones en Python.
1 2 3 4 5 6 |
import TAD.Polinomio (Polinomio, polCero, consPol, esPolCero) import Pol_Division_de_polinomios (resto) divisiblePol :: (Fractional a, Eq a) => Polinomio a -> Polinomio a -> Bool divisiblePol p q = esPolCero (resto p q) |
1 2 3 4 5 6 |
from src.Pol_Division_de_polinomios import resto from src.TAD.Polinomio import Polinomio, consPol, esPolCero, polCero def divisiblePol(p: Polinomio[float], q: Polinomio[float]) -> bool: return esPolCero(resto(p, q)) |