{- |
How many possibilities are there for representing an amount of n ct
by the Euro coins 1ct, 2ct, 5ct, 10ct, 20ct, 50ct, 100ct, 200ct?
-}
module Combinatorics.Coin where
import qualified Data.List as List
import qualified PowerSeries as PS
values :: [Int]
values = 1 : 2 : 5 : 10 : 20 : 50 : 100 : 200 : []
representationNumbersSingle :: Int -> [Integer]
representationNumbersSingle n =
cycle (1 : List.replicate (n-1) 0)
representationNumbers :: [Integer]
representationNumbers =
foldl PS.mul PS.one $
map representationNumbersSingle values