TAD de los polinomios - Coeficiente del término de grado k
Utilizando el tipo abstracto de datos de los polinomios definir las funciones
coeficiente :: (Num a, Eq a) => Int -> Polinomio a -> a
tal que coeficiente k p
es el coeficiente del término de grado k
del polinomio p
. Por ejemplo,
λ> ejPol = consPol 5 1 (consPol 2 5 (consPol 1 4 polCero)) λ> ejPol x^5 + 5*x^2 + 4*x λ> coeficiente 2 ejPol 5 λ> coeficiente 3 ejPol 0
Soluciones
A continuación se muestran las soluciones en Haskell y las soluciones en Python.
Soluciones en Haskell
import TAD.Polinomio (Polinomio, coefLider, grado, restoPol, consPol, polCero) coeficiente :: (Num a, Eq a) => Int -> Polinomio a -> a coeficiente k p | k == n = coefLider p | k > grado (restoPol p) = 0 | otherwise = coeficiente k (restoPol p) where n = grado p
Soluciones en Python
from typing import TypeVar from src.TAD.Polinomio import (Polinomio, coefLider, consPol, grado, polCero, restoPol) A = TypeVar('A', int, float, complex) def coeficiente(k: int, p: Polinomio[A]) -> A: if k == grado(p): return coefLider(p) if k > grado(restoPol(p)): return 0 return coeficiente(k, restoPol(p))