TAD de los polinomios - Multiplicación de un polinomio por un número
Utilizando el tipo abstracto de datos de los polinomios definir la función
multEscalar :: (Num a, Eq a) => a -> Polinomio a -> Polinomio a
tal que multEscalar c p
es el polinomio obtenido multiplicando el número c
por el polinomio p
. Por ejemplo,
λ> ejPol = consPol 1 2 (consPol 0 3 polCero) λ> ejPol 2*x + 3 λ> multEscalar 4 ejPol 8*x + 12 λ> multEscalar (1 % 4) ejPol 1 % 2*x + 3 % 4
Soluciones
A continuación se muestran las soluciones en Haskell y las soluciones en Python.
Soluciones en Haskell
import TAD.Polinomio (Polinomio, polCero, esPolCero, consPol, grado, coefLider, restoPol) import Data.Ratio multEscalar :: (Num a, Eq a) => a -> Polinomio a -> Polinomio a multEscalar c p | esPolCero p = polCero | otherwise = consPol n (c*b) (multEscalar c r) where n = grado p b = coefLider p r = restoPol p
Soluciones en Python
from typing import TypeVar from src.TAD.Polinomio import (Polinomio, coefLider, consPol, esPolCero, grado, polCero, restoPol) A = TypeVar('A', int, float, complex) def multEscalar(c: A, p: Polinomio[A]) -> Polinomio[A]: if esPolCero(p): return polCero() n = grado(p) b = coefLider(p) r = restoPol(p) return consPol(n, c * b, multEscalar(c, r))