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.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									
							 |