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> |