| 107 |
ira |
1 |
/* After John Fisher prolog tutorial 2.8 */
|
|
|
2 |
|
|
|
3 |
/* Enumerates ways to return $1 in change: */
|
|
|
4 |
|
|
|
5 |
change([Q,D,N,P]) :-
|
|
|
6 |
member(Q,[0,1,2,3,4]), /* quarters */
|
|
|
7 |
member(D,[0,1,2,3,4,5,6,7,8,9,10]) , /* dimes */
|
|
|
8 |
member(N,[0,1,2,3,4,5,6,7,8,9,10, /* nickels */
|
|
|
9 |
11,12,13,14,15,16,17,18,19,20]),
|
|
|
10 |
S is 25*Q +10*D + 5*N,
|
|
|
11 |
S =<100,
|
|
|
12 |
P is 100-S.
|
|
|
13 |
|
|
|
14 |
|
|
|
15 |
/* Returns correct change for the given AMT: */
|
|
|
16 |
|
|
|
17 |
change1(AMT,[Q,D,N,P]) :-
|
|
|
18 |
member(Q,[0,1,2,3,4]), /* quarters */
|
|
|
19 |
member(D,[0,1,2]), /* dimes */
|
|
|
20 |
member(N,[0,1]), /* nickels */
|
|
|
21 |
member(P,[0,1,2,3,4]), /* pennies */
|
|
|
22 |
AMT is 25*Q +10*D + 5*N + P.
|
|
|
23 |
|
|
|
24 |
|