Números trimórficos
Un número trimórfico es un número cuyo cubo termina en dicho número. Por ejemplo, 24 es trimórfico ya que 24^3 = 13824 termina en 24.
Para cada entero positivo n, la densidad de trimórficos hasta n es el cociente entre la cantidad de números trimórficos menores o iguales que n y el número n. Por ejemplo, hasta 10 hay 6 números trimórficos (0, 1, 4, 5, 6 y 9); por tanto, la densidad hasta 10 es 6/10 = 0.6.
Definir las funciones
| 1 2 |    trimorficos         :: [Integer]    densidadTrimorficos :: Integer -> Double | 
tal que
- trimorficos es la lista de los números trimórficos. Por ejemplo,
| 1 2 |      λ> take 20 trimorficos      [0,1,4,5,6,9,24,25,49,51,75,76,99,125,249,251,375,376,499,501] | 
- (densidadTrimorficos n) es la densidad de trimórficos hasta n. Por ejemplo,
| 1 2 3 4 5 |      densidadTrimorficos 10      ==  0.6      densidadTrimorficos 100     ==  0.13      densidadTrimorficos 1000    ==  2.6e-2      densidadTrimorficos 10000   ==  3.7e-3      densidadTrimorficos 100000  ==  4.8e-4 | 
Soluciones
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | import Data.List (genericLength, isPrefixOf) trimorficos :: [Integer] trimorficos = filter esTrimorfico [0..] -- (esTrimorfico n) se verifica si n es trimórfico. Por ejemplo, --    esTrimorfico 24  ==  True esTrimorfico :: Integer -> Bool esTrimorfico n =   reverse (show n) `isPrefixOf` reverse (show (n^3))  densidadTrimorficos :: Integer -> Double densidadTrimorficos n =   genericLength [x | x <- [0..n-1], esTrimorfico x] / fromIntegral n |