Munchausen numbers: Difference between revisions

Line 1,049:
main :: IO ()
main = print $ filter isMunchausen [1 .. 5000]</lang>
 
Or, without digitToInt, but importing join and swap.
<lang haskell>import Control.Monad (join)
import Data.List (unfoldr)
import Data.Tuple (swap)
 
isMunchausen :: Integer -> Bool
isMunchausen = (==) <*> (foldr ((+) . join (^)) 0 . unfoldr digit)
 
digit 0 = Nothing
digit n = Just $ swap (quotRem n 10)
 
main :: IO ()
main = print $ filter isMunchausen [1 .. 5000]</lang>
 
{{Out}}
<pre>[1,3435]</pre>
9,659

edits