Subversion Repositories programming

Rev

Blame | Last modification | View Log | RSS feed

/* After John Fisher prolog tutorial 2.8 */

/* Enumerates ways to return $1 in change: */

change([Q,D,N,P]) :- 
    member(Q,[0,1,2,3,4]),               /* quarters     */ 
    member(D,[0,1,2,3,4,5,6,7,8,9,10]) , /* dimes        */ 
    member(N,[0,1,2,3,4,5,6,7,8,9,10,    /* nickels      */ 
               11,12,13,14,15,16,17,18,19,20]),  
    S is 25*Q +10*D + 5*N, 
    S =<100, 
    P is 100-S.


/* Returns correct change for the given AMT: */

change1(AMT,[Q,D,N,P]) :- 
    member(Q,[0,1,2,3,4]),               /* quarters     */ 
    member(D,[0,1,2]),                   /* dimes        */ 
    member(N,[0,1]),                     /* nickels      */ 
    member(P,[0,1,2,3,4]),               /* pennies      */
    AMT is 25*Q +10*D + 5*N + P.