DEV Community

Discussion on: Daily Challenge #197 - Population Growth

Collapse
 
avalander profile image
Avalander • Edited

Haskell

module PopGrowth (
    nbYear
) where


nbYear :: Integral a => a -> Double -> a -> a -> a
nbYear = nbYear' 1

nbYear' :: Integral a => a -> a -> Double -> a -> a -> a
nbYear' year current percent aug target
    | current >= target = year
    | otherwise         = nbYear' (year + 1) next percent aug target
    where
        perone = percent / 100
        inc    = round (perone * (fromIntegral current))
        next   = current + inc + aug

-- Output
nbYear 1500 5.0 100 5000          -- 15
nbYear 1500000 2.5 10000 2000000  -- 10
nbYear 1500000 0.25 1000 2000000  -- 94