Munchausen numbers: Difference between revisions

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

edits