From 61b5f5abed62870ac9bac1c1d25f577a6c1f1658 Mon Sep 17 00:00:00 2001 From: fredrikr79 Date: Tue, 4 Nov 2025 18:04:52 +0100 Subject: [PATCH] ex5: task 1 --- assignment5/main.pl | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 assignment5/main.pl diff --git a/assignment5/main.pl b/assignment5/main.pl new file mode 100644 index 0000000..e8e2ef4 --- /dev/null +++ b/assignment5/main.pl @@ -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]). +