39 lines
		
	
	
		
			642 B
		
	
	
	
		
			Perl
		
	
	
	
	
	
		
		
			
		
	
	
			39 lines
		
	
	
		
			642 B
		
	
	
	
		
			Perl
		
	
	
	
	
	
| 
								 | 
							
								% Thom Fruehwirth, LMU, 980129, 980311
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								:- use_module(library(chr)).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								handler pathc.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								option(already_in_heads,on).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								constraints c/3.
							 | 
						||
| 
								 | 
							
								% c(X,Y,N): the distance between variables X and Y is the positive number N
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      c(I,J,A),c(I,J,B) <=> C is min(A,B), c(I,J,C).
							 | 
						||
| 
								 | 
							
								      c(I,J,A),c(J,K,B) ==> C is A+B, c(I,K,C).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								% Only complete if both c(I,J,D) and c(J,I,D) are present for each constraint
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/*
							 | 
						||
| 
								 | 
							
								% Queries
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								c(A,B,D).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								c(A,B,2),c(A,B,4).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								c(A,B,2),c(B,C,3).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								c(A,B,2),c(B,A,1).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								c(A,B,2),c(B,A,0).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								c(A,B,2),c(A,C,3),c(C,B,2).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								c(A,B,2),c(A,C,3),c(C,B,4).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								c(A,B,2),c(B,C,3),c(C,A,4).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								c(A,B,2),c(B,C,3),c(C,A,4),c(B,A,2),c(C,B,3),c(A,C,4).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								*/
							 |