0votos

Números Armstrong en c# en Haskell

por josejuan hace 3 años

.

Este es un problema que me hizo pensar bastante

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import System.Environment (getArgs) 
import Data.Char (digitToInt) 
import Control.Applicative ((<$>)) 
 
-- Revisar si lo es 
isArmstrong n = let ds = map digitToInt $ show n 
                    nd = length ds 
                in  n == sum [d^nd | d <- ds] 
 
-- Revisar un rango 
armstrongsBetween a b = [x | x <- [a..b], isArmstrong x] 
 
-- Interactivo 
main = do 
  (a:b:_) <- map read <$> getArgs 
  print $ armstrongsBetween a b 
 
 
{- 
 
[josejuan@centella Solveet]$ crono ./armstrong 1 10000000 
[1,2,3,4,5,6,7,8,9,153,370,371,407,1634,8208,9474,54748,92727,93084,548834,1741725,4210818,9800817,9926315] 
Mem: 3920 kbytes. Time: 0:05.37 
 
-} 

Comenta la solución

Tienes que identificarte para poder publicar tu comentario.