1

我有一条规则会生成以下内容

route(5,1,5,3) 
route(5,2,5,3) 
route(5,3,5,3) 
route(3,1,3,1) 
route(2,3,5,3) 
route(3,3,5,3) 
route(4,3,5,3) 
route(4,1,3,1) 
route(5,1,3,1) 
route(3,2,3,1) 
route(3,3,3,1) 
route(3,4,3,1) 
route(3,5,3,1)

其中以下部分是从 5,1 开始到 5,3 结束的路线

route(5,1,5,3) 
route(5,2,5,3) 
route(5,3,5,3)

在路线(x1,y1,x2,y2)

  • x1 = 第一个点的 x 坐标
  • y1 = 第一个点的 y 坐标
  • x2 = 第二个点的 x 坐标
  • y2 = 第二个点的 y 坐标

我想编写一个约束,以便这些路线不会相互交叉,但我不知道如何解决这个问题。我将不胜感激在这件事上的任何帮助。

4

1 回答 1

1

我使用以下规则来防止穿越路线。

(X',Y') = (X'',Y'') :- route(X,Y,X',Y'), route(X,Y,X'',Y'').
于 2019-11-15T08:31:58.387 回答