Polinomio digital
Definir la función
1 |
polinomioDigital :: Int -> Polinomio Int |
tal que (polinomioDigital n) es el polinomio cuyos coeficientes son los dígitos de n. Por ejemplo,
1 2 |
λ> polinomioDigital 5703 5*x^3 + 7*x^2 + 3 |
Nota: Este ejercicio debe realizarse usando únicamente las funciones de la librería I1M.Pol que se encuentra aquí y se describe aquí.
Soluciones
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
import I1M.Pol polinomioDigital :: Int -> Polinomio Int polinomioDigital = creaPolDensa . digitos -- (digitos n) es la lista de las dígitos de n. Por ejemplo, -- dígitos 142857 == [1,4,2,8,5,7] digitos :: Int -> [Int] digitos n = [read [x]| x <- show n] -- (creaPolDensa xs) es el polinomio cuya representación densa es -- xs. Por ejemplo, -- creaPolDensa [7,0,0,4,0,3] == 7*x^5 + 4*x^2 + 3 creaPolDensa :: (Num a, Eq a) => [a] -> Polinomio a creaPolDensa [] = polCero creaPolDensa (x:xs) = consPol (length xs) x (creaPolDensa xs) |
6 Comentarios