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 |