Esthetic numbers: Difference between revisions
Content added Content deleted
(→{{header|Haskell}}: added solution) |
m (→{{header|Haskell}}: minor typos) |
||
Line 2,723: | Line 2,723: | ||
=={{header|Haskell}}== |
=={{header|Haskell}}== |
||
<lang haskell>import Data.List (unfoldr, genericIndex) |
<lang haskell>import Data.List (unfoldr, genericIndex) |
||
import Control.Monad (replicateM, foldM, |
import Control.Monad (replicateM, foldM, mzero) |
||
-- a predicate for esthetic numbers |
-- a predicate for esthetic numbers |
||
Line 2,738: | Line 2,738: | ||
-- representation of numbers as digits |
-- representation of numbers as digits |
||
fromBase b = foldM f 0 |
fromBase b = foldM f 0 |
||
where f r d | d < 0 || d >= b = |
where f r d | d < 0 || d >= b = mzero |
||
| otherwise = |
| otherwise = pure (r*b + d) |
||
toBase b = reverse . unfoldr f |
toBase b = reverse . unfoldr f |