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, guard)
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 = [r*b + d]
| otherwise = pure (r*b + d)


toBase b = reverse . unfoldr f
toBase b = reverse . unfoldr f