Munchausen numbers: Difference between revisions

Content added Content deleted
Line 1,049: Line 1,049:
main :: IO ()
main :: IO ()
main = print $ filter isMunchausen [1 .. 5000]</lang>
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}}
{{Out}}
<pre>[1,3435]</pre>
<pre>[1,3435]</pre>