View difference between Paste ID: nx7V46Ay and zWibfBYg
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))