TAD de los polinomios: Multiplicación de un polinomio por un número
Usando el tipo abstracto de los polinomios, definir la función
1 |
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,
1 2 3 4 5 6 7 |
λ> 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.
1 2 3 4 5 6 7 8 9 10 11 |
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 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
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)) |