package Ġcom . l ond og ard . st ok k Ċ Ċ import Ġkotlin . math . pow Ċ Ċ object ĠSto kk Helper Ġ{ ĊĠĠĠ Ġconst Ġval Ġmonth : ĠDouble Ġ= Ġ 1 . 0 Ġ/ Ġ 1 2 ĊĠĠĠ Ġfun Ġcompound Interest ( years : ĠInt , Ġstart Amount : ĠDouble , Ġinterest : ĠDouble , Ġmonthly Deposit : ĠInt ): ĠDouble Ġ= ĊĠĠĠĠĠĠĠ Ġ( 0 Ġuntil Ġyears * 1 2 ). fold ( start Amount ) Ġ{ Ġacc , Ġ_ Ġ-> Ġ( acc Ġ+ Ġmonthly Deposit ) Ġ* Ġinterest . pow ( month ) Ġ} ĊĊĠĠĠ Ġ// TODO Ġcreate Ġa Ġgraph Ġusing Ġthis Ġmethod ĊĠĠĠ Ġ@ Experimental Std lib Api ĊĠĠĠ Ġfun Ġcompound Interest Month By Month ( years : ĠInt , Ġstart Amount : ĠDouble , Ġinterest : ĠDouble , Ġmonthly Deposit : ĠInt ): ĠList < Double > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġs Ġ= Ġ( 0 Ġuntil Ġyears * 1 2 ). scan ( start Amount ) Ġ{ Ġacc , Ġ_ Ġ-> Ġ( acc Ġ+ Ġmonthly Deposit ) Ġ* Ġinterest . pow ( month ) Ġ} ĊĠĠĠĠĠĠĠ Ġprintln ( s ) ĊĠĠĠĠĠĠĠ Ġreturn Ġs ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠReturn Ġamount Ġof Ġmonths Ġyou Ġcan Ġwithdraw ĠX Ġamount Ġof Ġmoney Ġeach Ġmonth ĊĠĠĠ Ġfun Ġamount OfMonth sWith draw al ( start Amount : ĠDouble Ġ= Ġ 0 . 0 , Ġinterest : ĠDouble Ġ= Ġ 1 . 0 , Ġmonthly Withdraw al : ĠInt Ġ= Ġ 0 ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġmonth Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġamount Ġ= Ġstart Amount ĊĠĠĠĠĠĠĠ Ġwhile ( amount Ġ> Ġ 0 ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġamount Ġ-= Ġmonthly Withdraw al . toDouble () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġamount Ġ= Ġamount Ġ* Ġinterest . pow ( month ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmonth Ġ+= Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġmonth ĊĠĠĠ Ġ} Ċ }