Munchausen numbers: Difference between revisions

Content added Content deleted
Line 1,310: Line 1,310:


=={{header|Haskell}}==
=={{header|Haskell}}==
<lang haskell>import Data.List (unfoldr)
<lang haskell>import Control.Monad (join)
import Data.List (unfoldr)


isMunchausen :: Integer -> Bool
isMunchausen :: Integer -> Bool
isMunchausen =
isMunchausen n = (n ==) $ sum $ map (\x -> x^x) $ unfoldr digit n where
(==)
digit 0 = Nothing
digit n = Just (r,q) where (q,r) = n `divMod` 10
<*> (sum . map (join (^)) . unfoldr digit)

digit 0 = Nothing
digit n = Just (r, q) where (q, r) = n `divMod` 10


main :: IO ()
main :: IO ()
main = print $ filter isMunchausen [1..5000]</lang>
main = print $ filter isMunchausen [1 .. 5000]</lang>
{{out}}
{{out}}
<pre>[1,3435]</pre>
<pre>[1,3435]</pre>