43 lines
640 B
Prolog
43 lines
640 B
Prolog
|
|
% Coins -- 2007 by Yuce Tekol <yucetekol@gmail.com>
|
|
|
|
:- use_module(library('clpfd')).
|
|
|
|
coins(S, Count, Total) :-
|
|
% A=1, B=5, C=10, D=50, E=100
|
|
S = [A, B, C, D, E],
|
|
|
|
Av is 1,
|
|
Bv is 5,
|
|
Cv is 10,
|
|
Dv is 50,
|
|
Ev is 100,
|
|
|
|
Aup is Total // Av,
|
|
Bup is Total // Bv,
|
|
Cup is Total // Cv,
|
|
Dup is Total // Dv,
|
|
Eup is Total // Ev,
|
|
|
|
A in 0..Aup,
|
|
B in 0..Bup,
|
|
C in 0..Cup,
|
|
D in 0..Dup,
|
|
E in 0..Eup,
|
|
|
|
VA #= A*Av,
|
|
VB #= B*Bv,
|
|
VC #= C*Cv,
|
|
VD #= D*Dv,
|
|
VE #= E*Ev,
|
|
|
|
sum(S, #=, Count),
|
|
VA + VB + VC + VD + VE #= Total,
|
|
|
|
label(S).
|
|
|
|
% :- findall(S, coins(S, 100, 500), Ss), halt.
|
|
%:- coins(S, 100, 500), writeln(S), fail.
|
|
|
|
|