Munchausen numbers: Difference between revisions
Content added Content deleted
Line 1,050: | Line 1,050: | ||
main = print $ filter isMunchausen [1 .. 5000]</lang> |
main = print $ filter isMunchausen [1 .. 5000]</lang> |
||
Or, without digitToInt, but importing join and |
Or, without digitToInt, but importing join, swap and bool. |
||
<lang haskell>import Control.Monad (join) |
<lang haskell>import Control.Monad (join) |
||
import Data.List (unfoldr) |
import Data.List (unfoldr) |
||
import Data.Bool (bool) |
|||
import Data.Tuple (swap) |
import Data.Tuple (swap) |
||
isMunchausen :: Integer -> Bool |
isMunchausen :: Integer -> Bool |
||
isMunchausen = |
isMunchausen = |
||
(==) <*> |
|||
(foldr ((+) . join (^)) 0 . |
|||
digit 0 = Nothing |
|||
unfoldr ((flip bool Nothing . Just . swap . flip quotRem 10) <*> (0 ==))) |
|||
main :: IO () |
main :: IO () |