0votos

Número capicúa. (con recursividad en cualquier lenguaje) en Haskell

por josejuan hace 4 años

`iterate` aplica recursivamente la operación

Si se toma un numero cualquiera, por supuesto con mas de un digito, y se lo invierte, al sumarlo con el numero original existe la posibilidad que de un numero capicúa. Ejemplo: 12 + 21 = 33 102 + 201 = 303 Si no resulta así como en el caso de el numero 48 -> 48 +84 = 132 hay que repetir el proceso para encontrarlo 132 + 231 = 363.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
capicua = head . dropWhile (ap (/=) reverse . show) . iterate (ap (+) (read . reverse . show)) 
 
 
 
 
 
-- Por ejemplo 
main = mapM_ (\n -> putStrLn $ show n ++ "\t" ++ show (capicua n)) [12, 102, 48, 187] 
 
{- 
    12  33 
    102 303 
    48  363 
    187 8813200023188 
-} 

Comenta la solución

Tienes que identificarte para poder publicar tu comentario.