fork(1) download
  1. import Text.Printf
  2. cPlan t p sp mp = reverse $ f [(0, t) :: (Float, Float)]
  3. where f r@((a, b):r') = if b < 0 then (a + b, 0) : r' else f $ (a + mp, b * p + sp - mp) : r
  4.  
  5. main = mapM_ (uncurry (printf "Выплачено: %9.2f | Долг: %9.2f\n")) $ cPlan 40000 1.03 1000 5000
Success #stdin #stdout 0s 6312KB
stdin
Standard input is empty
stdout
Выплачено:      0.00 | Долг:  40000.00
Выплачено:   5000.00 | Долг:  37200.00
Выплачено:  10000.00 | Долг:  34316.00
Выплачено:  15000.00 | Долг:  31345.48
Выплачено:  20000.00 | Долг:  28285.84
Выплачено:  25000.00 | Долг:  25134.42
Выплачено:  30000.00 | Долг:  21888.45
Выплачено:  35000.00 | Долг:  18545.10
Выплачено:  40000.00 | Долг:  15101.45
Выплачено:  45000.00 | Долг:  11554.50
Выплачено:  50000.00 | Долг:   7901.13
Выплачено:  55000.00 | Долг:   4138.16
Выплачено:  60000.00 | Долг:    262.31
Выплачено:  61270.18 | Долг:      0.00