TAD de los polinomios: Resta de polinomios
Usando el tipo abstracto de los polinomios, definir la función
1 |
restaPol :: (Num a, Eq a) => Polinomio a -> Polinomio a -> Polinomio a |
tal que restaPol p q
es el polinomio obtenido restándole a p
el q
. Por ejemplo,
1 2 3 4 5 6 7 8 |
λ> ejPol1 = consPol 5 1 (consPol 4 5 (consPol 2 5 (consPol 0 9 polCero))) λ> ejPol2 = consPol 4 3 (consPol 2 5 (consPol 0 3 polCero)) λ> ejPol1 x^5 + 5*x^4 + 5*x^2 + 9 λ> ejPol2 3*x^4 + 5*x^2 + 3 λ> restaPol ejPol1 ejPol2 x^5 + 2*x^4 + 6 |
Soluciones
A continuación se muestran las soluciones en Haskell y las soluciones en Python.
1 2 3 4 5 6 7 8 |
import TAD.Polinomio (Polinomio, polCero, consPol) import Pol_Suma_de_polinomios (sumaPol) import Pol_Crea_termino (creaTermino) import Pol_Producto_polinomios (multPorTerm) restaPol :: (Num a, Eq a) => Polinomio a -> Polinomio a -> Polinomio a restaPol p q = sumaPol p (multPorTerm (creaTermino 0 (-1)) q) |
1 2 3 4 5 6 7 8 9 10 11 |
from typing import TypeVar from src.Pol_Crea_termino import creaTermino from src.Pol_Producto_polinomios import multPorTerm from src.Pol_Suma_de_polinomios import sumaPol from src.TAD.Polinomio import Polinomio, consPol, polCero A = TypeVar('A', int, float, complex) def restaPol(p: Polinomio[A], q: Polinomio[A]) -> Polinomio[A]: return sumaPol(p, multPorTerm(creaTermino(0, -1), q)) |