17 lines
		
	
	
		
			303 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			17 lines
		
	
	
		
			303 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
								 | 
							
								% n-queens with finite domains
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								:- setval(domain,number).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								queen(N,L):- 
							 | 
						||
| 
								 | 
							
									length(L,N), 
							 | 
						||
| 
								 | 
							
									L::1..N,
							 | 
						||
| 
								 | 
							
									queen(L).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								queen([]).
							 | 
						||
| 
								 | 
							
								queen([X|Xs]):- safe(X,Xs,1),queen(Xs).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								safe(X,[],N).
							 | 
						||
| 
								 | 
							
								safe(X,[H|T],N):- no_attack(X,H,N), M is N+1, safe(X,T,M).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								no_attack(X,Y,N):- X ne Y, X ne Y-N, X ne Y+N, Y ne X-N, Y ne X+N.
							 |