Sha256: 19e2b4d7bf709ce35282d16c25b7be3f9dccd9d1076cc10492d8c34bab766438

Contents?: true

Size: 579 Bytes

Versions: 334

Compression:

Stored size: 579 Bytes

Contents

module Base (rebase) where

import Control.Monad (foldM)
import Data.List     (unfoldr)
import Data.Tuple    (swap)

rebase :: Integral a => a -> a -> [a] -> Maybe [a]
rebase ibase obase ds
    | ibase < 2 = Nothing
    | obase < 2 = Nothing
    | otherwise = toDigits obase <$> fromDigits ibase ds
  where

    fromDigits base = foldM f 0
      where
        f acc x | x >= 0 && x < base = Just (acc * base + x)
                | otherwise          = Nothing

    toDigits base = reverse . unfoldr f
      where
        f 0 = Nothing
        f x = Just . swap $ x `divMod` base

Version data entries

334 entries across 334 versions & 1 rubygems

Version Path
trackler-2.2.1.117 tracks/haskell/exercises/all-your-base/examples/success-standard/src/Base.hs
trackler-2.2.1.116 tracks/haskell/exercises/all-your-base/examples/success-standard/src/Base.hs
trackler-2.2.1.115 tracks/haskell/exercises/all-your-base/examples/success-standard/src/Base.hs
trackler-2.2.1.114 tracks/haskell/exercises/all-your-base/examples/success-standard/src/Base.hs
trackler-2.2.1.113 tracks/haskell/exercises/all-your-base/examples/success-standard/src/Base.hs
trackler-2.2.1.111 tracks/haskell/exercises/all-your-base/examples/success-standard/src/Base.hs
trackler-2.2.1.110 tracks/haskell/exercises/all-your-base/examples/success-standard/src/Base.hs
trackler-2.2.1.109 tracks/haskell/exercises/all-your-base/examples/success-standard/src/Base.hs
trackler-2.2.1.108 tracks/haskell/exercises/all-your-base/examples/success-standard/src/Base.hs
trackler-2.2.1.107 tracks/haskell/exercises/all-your-base/examples/success-standard/src/Base.hs
trackler-2.2.1.106 tracks/haskell/exercises/all-your-base/examples/success-standard/src/Base.hs
trackler-2.2.1.105 tracks/haskell/exercises/all-your-base/examples/success-standard/src/Base.hs
trackler-2.2.1.104 tracks/haskell/exercises/all-your-base/examples/success-standard/src/Base.hs
trackler-2.2.1.103 tracks/haskell/exercises/all-your-base/examples/success-standard/src/Base.hs
trackler-2.2.1.102 tracks/haskell/exercises/all-your-base/examples/success-standard/src/Base.hs
trackler-2.2.1.101 tracks/haskell/exercises/all-your-base/examples/success-standard/src/Base.hs
trackler-2.2.1.100 tracks/haskell/exercises/all-your-base/examples/success-standard/src/Base.hs
trackler-2.2.1.99 tracks/haskell/exercises/all-your-base/examples/success-standard/src/Base.hs
trackler-2.2.1.98 tracks/haskell/exercises/all-your-base/examples/success-standard/src/Base.hs
trackler-2.2.1.97 tracks/haskell/exercises/all-your-base/examples/success-standard/src/Base.hs