ex5: task 1
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
:- use_module(library(clpfd)).
|
||||
:- initialization(main).
|
||||
|
||||
main :-
|
||||
findall([Ones,Fives,Tens,Twenties],
|
||||
(payment(25, [coin(Ones,1,11),coin(Fives,5,4),coin(Tens,10,3),coin(Twenties,20,2)]), label([Ones,Fives,Tens,Twenties])),
|
||||
Solutions),
|
||||
forall(member(Sol, Solutions), (write('Solution: '), writeln(Sol))).
|
||||
|
||||
payment(Sum, Coins) :-
|
||||
payment_acc(0, Sum, Coins).
|
||||
|
||||
payment_acc(Acc, Sum, []) :-
|
||||
Acc #= Sum.
|
||||
|
||||
payment_acc(Acc, Sum, [coin(Count, Value, Available)|Tail]) :-
|
||||
Count in 0..Available,
|
||||
NewAcc #= Acc + Count * Value,
|
||||
payment_acc(NewAcc, Sum, Tail).
|
||||
|
||||
?- payment(25, [coin(Ones,1,11),coin(Fives,5,4),coin(Tens,10,3),coin(Twenties,20,2)]).
|
||||
?- payment(25, [coin(Ones,1,11),coin(Fives,5,4),coin(Tens,10,3),coin(Twenties,20,2)]), label([Ones, Fives, Tens, Twenties]).
|
||||
|
||||
Reference in New Issue
Block a user