43 lines
640 B
Perl
43 lines
640 B
Perl
|
|
||
|
% 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.
|
||
|
|
||
|
|