0

Thats my task: We have coins: 1 cent, 2 cents, 5 cents, 10 cents, 20 cents, 50 cents, 1 dollar and 2 dollars. How many ways can you get 2 dollars using anynumber of coins?

I accualy ended up with something like this:

    coins(a,1; b,2; c,5; d,10; e,20; f,50; g,100; h,200).
    #const goal=200.
    
    {selected(I)} :- coins(I, W).
    :- #sum {W, X : coins(X, W), selected(X)} != goal.
    
    #show selected/1.

How to show all the answers and let the program sums the same coins?? I'm brand new to that thing...

Heaglock
  • 1
  • 1

1 Answers1

0

If I understood you correctly, you want to have multiple coins of the same value and have a total of 200. Try this modification:

coins(a,1;b,2; c,5; d,10; e,20; f,50; g,100; h,200).
#const goal=200.

{selected(I)} :- coins(I, W).
1 { selected(I,J) : J=1..2 } 1 :- selected(I).
:- #sum {J*W,X : coins(X, W), selected(X), selected(X,J)} != goal.

#show selected/2.

The difference is an additionall predicate selected/2, which states the number of coins. I put up to 2 coins for an option. Output:

Answer: 1
selected(g,2)
Answer: 2
selected(f,2) selected(g,1)
Answer: 3
selected(c,2) selected(e,2) selected(f,1) selected(g,1)
Answer: 4
selected(d,1) selected(e,2) selected(f,1) selected(g,1)
Answer: 5
selected(c,2) selected(d,2) selected(e,1) selected(f,1) selected(g,1)
Answer: 6
selected(a,1) selected(b,2) selected(c,1) selected(e,2) selected(f,1) selected(g,1)
Answer: 7
selected(a,1) selected(b,2) selected(c,1) selected(d,2) selected(e,1) selected(f,1) selected(g,1)
Answer: 8
selected(h,1)
SATISFIABLE
DuDa
  • 3,718
  • 4
  • 16
  • 36