56 lines
1.3 KiB
Plaintext
56 lines
1.3 KiB
Plaintext
|
|
||
|
/*
|
||
|
**********************************************************************
|
||
|
*
|
||
|
* CLP(R) Version 2.0 (Example Programs Release)
|
||
|
* (C) Copyright, March 1986, Monash University
|
||
|
*
|
||
|
**********************************************************************
|
||
|
*/
|
||
|
|
||
|
%
|
||
|
% Calculate compound interest.
|
||
|
% Arguments are Principal, Time (months), Interest (fraction), Balance,
|
||
|
% and Monthly Payment.
|
||
|
%
|
||
|
% The goals ?- go1 demonstrates
|
||
|
% obtaining ground answers for two different combinations of inputs.
|
||
|
% The goals ?- go2 and ?- go3 deal with getting linear
|
||
|
% equations as answers, while ?- go4 produces a
|
||
|
% polynomial equation.
|
||
|
%
|
||
|
|
||
|
mg(P,T,I,B,MP):-
|
||
|
T > 0,
|
||
|
T <= 1,
|
||
|
B + MP = P * (1 + I).
|
||
|
mg(P,T,I,B,MP):-
|
||
|
T > 1,
|
||
|
mg(P * (1 + I) - MP, T - 1, I, B, MP).
|
||
|
|
||
|
go1:- mg(120000,120,0.01,0,MP), printf("Forward: MP = %g\n",[MP]),
|
||
|
mg(P,120,0.01,0,MP), printf("Backward: P = %g\n",[P]).
|
||
|
|
||
|
% Answer:
|
||
|
% Forward: MP = 1721.651381
|
||
|
% Backward: P = 120000
|
||
|
|
||
|
go2:- mg(P,120,0.01,0,MP), dump([P,MP]).
|
||
|
|
||
|
% Answer:
|
||
|
% 2 ?- go2.
|
||
|
% P = 69.700522*MP
|
||
|
|
||
|
go3:- mg(P,120,0.01,B,MP), dump([P,B,MP]).
|
||
|
|
||
|
% Answer:
|
||
|
% 3 ?- go3.
|
||
|
% P = 0.302995*B + 69.700522*MP
|
||
|
|
||
|
go4:- mg(999, 3, Int, 0, 400), dump.
|
||
|
|
||
|
% Answer:
|
||
|
% 400 = (-400 + (599 + 999*Int) * (1 + Int)) * (1 + Int)
|
||
|
|
||
|
?- printf("\n>>> Sample goals: go1/0, go2/0, go3/0, go4/0\n", []).
|