Files
TDT4165/assignment5/task1.pl
2025-11-05 08:58:26 +01:00

24 lines
815 B
Prolog

:- 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]).