SHOW:
|
|
- or go back to the newest paste.
| 1 | local nprompt = function(q) | |
| 2 | print(q) | |
| 3 | term.blit("> ","3 "," ")
| |
| 4 | return tonumber(read()) | |
| 5 | end | |
| 6 | ||
| 7 | local round = function(num) | |
| 8 | return math.floor((num*100)+0.5)/100 | |
| 9 | end | |
| 10 | ||
| 11 | term.clear() | |
| 12 | term.setCursorPos(1,1) | |
| 13 | ||
| 14 | - | amntOfMonths = 12 --nprompt("Length of loan? (months)")
|
| 14 | + | local amntOfMonths = 12 --nprompt("Length of loan? (months)")
|
| 15 | - | monthlyPayment = nprompt("Monthly payment?")
|
| 15 | + | local monthlyPayment = nprompt("Monthly payment?")
|
| 16 | - | principle = nprompt("Principle?")
|
| 16 | + | local principle = nprompt("Principle?")
|
| 17 | - | interestRate = nprompt("Interest rate?")/100
|
| 17 | + | local interestRate = nprompt("Interest rate?")/100
|
| 18 | - | payoffMonths = nprompt("Payoff after how long? (months)")
|
| 18 | + | local payoffMonths = nprompt("Payoff after how long? (months)")
|
| 19 | - | totalMonths = nprompt("Total months of loan?")
|
| 19 | + | local totalMonths = nprompt("Total months of loan?")
|
| 20 | ||
| 21 | - | getIt = function(payoffMonths) |
| 21 | + | local getIt = function(payoffMonths) |
| 22 | ||
| 23 | output = {{}}
| |
| 24 | output[1].interest = principle * interestRate * (1/amntOfMonths) | |
| 25 | output[1].principle = monthlyPayment - output[1].interest | |
| 26 | output[1].newPrinciple = principle - output[1].principle | |
| 27 | ||
| 28 | for a = 2, payoffMonths do | |
| 29 | output[a] = {}
| |
| 30 | output[a].interest = output[a-1].newPrinciple * interestRate * (1/amntOfMonths) | |
| 31 | output[a].principle = monthlyPayment - output[a].interest | |
| 32 | output[a].newPrinciple = output[a-1].newPrinciple - output[a].principle | |
| 33 | end | |
| 34 | ||
| 35 | output[#output].principle = output[#output-1].newPrinciple | |
| 36 | output[#output].newPrinciple = 0 | |
| 37 | finalPayment = output[#output].interest + output[#output].principle | |
| 38 | return output,finalPayment | |
| 39 | end | |
| 40 | ||
| 41 | local printOutput = function(output,finalPayment) | |
| 42 | ||
| 43 | local max = {}
| |
| 44 | for a = 1, #output do | |
| 45 | max.interest = math.max(#tostring(output[a].interest), max.interest or 0) | |
| 46 | max.principle = math.max(#tostring(output[a].principle), max.principle or 0) | |
| 47 | max.newPrinciple = math.max(#tostring(output[a].newPrinciple), max.newPrinciple or 0) | |
| 48 | end | |
| 49 | for k,v in pairs(max) do | |
| 50 | max[k]=v+1 | |
| 51 | end | |
| 52 | ||
| 53 | term.setCursorPos(1,1) | |
| 54 | term.write("Int.")
| |
| 55 | term.setCursorPos(max.interest+1,1) | |
| 56 | term.write("Pri.")
| |
| 57 | term.setCursorPos(max.interest+max.principle+1,1) | |
| 58 | term.write("NewPri.")
| |
| 59 | ||
| 60 | for a = 1, #output do | |
| 61 | term.setCursorPos(1,a+1) | |
| 62 | term.write(round(output[a].interest)) | |
| 63 | term.setCursorPos(max.interest+1,a+1) | |
| 64 | term.write(round(output[a].principle)) | |
| 65 | term.setCursorPos(max.interest+max.principle+1,a+1) | |
| 66 | term.write(round(output[a].newPrinciple)) | |
| 67 | end | |
| 68 | ||
| 69 | term.setCursorPos(1,#output+3) | |
| 70 | ||
| 71 | print("Final payment: "..tostring(round(finalPayment)))
| |
| 72 | end | |
| 73 | ||
| 74 | local tab1, finalPay1 = getIt(payoffMonths) | |
| 75 | local tab2, finalPay2 = getIt(totalMonths) | |
| 76 | term.clear() | |
| 77 | printOutput(tab1,finalPay1) | |
| 78 | print("You saved: "..round(finalPay1-finalPay2)) |