35 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			35 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 
								 | 
							
								# -*- coding: utf-8 -*-
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# This example is adapted from http://eclipse.crosscoreop.com/examples/puzzle1.pl.txt
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# "Twelve draught pieces are arranged in a square frame with four on
							 | 
						||
| 
								 | 
							
								# each side.  Try placing them so there are 5 on each side.  (Kordemsky)
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# "Maybe this problem is not described very well but I wanted to stick
							 | 
						||
| 
								 | 
							
								# with the original text from Kordemsky.  The problem may be stated in
							 | 
						||
| 
								 | 
							
								# terms of guards on the wall of a square fort.  If a guard stands on a
							 | 
						||
| 
								 | 
							
								# side wall then he may only watch that particular wall whereas a guard
							 | 
						||
| 
								 | 
							
								# at a corner may watch two walls.  If twelve guards are positioned such
							 | 
						||
| 
								 | 
							
								# that there are two on each side wall and one at each corner then there
							 | 
						||
| 
								 | 
							
								# are four guards watching each wall.  How can they be rearranged such
							 | 
						||
| 
								 | 
							
								# that there are five watching each wall?"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								from pyswip.prolog import Prolog
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								def main():
							 | 
						||
| 
								 | 
							
								    prolog = Prolog()
							 | 
						||
| 
								 | 
							
								    prolog.consult("puzzle1.pl")
							 | 
						||
| 
								 | 
							
								    for soln in prolog.query("solve(B)."):
							 | 
						||
| 
								 | 
							
								        #B = eval(soln["B"])
							 | 
						||
| 
								 | 
							
								        B = soln["B"]
							 | 
						||
| 
								 | 
							
								        # [NW,N,NE,W,E,SW,S,SE]
							 | 
						||
| 
								 | 
							
								        print "%d %d %d" % tuple(B[:3])
							 | 
						||
| 
								 | 
							
								        print "%d   %d"   % tuple(B[3:5])
							 | 
						||
| 
								 | 
							
								        print "%d %d %d" % tuple(B[5:])
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								        cont = raw_input("Press 'n' to finish: ")
							 | 
						||
| 
								 | 
							
								        if cont.lower() == "n": break
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								if __name__ == "__main__":
							 | 
						||
| 
								 | 
							
								    main()
							 |