【发布时间】:2018-05-01 02:21:04
【问题描述】:
我最近开始学习 Prolog,遇到了一个问题。
有些人围坐在一张桌子旁。我们得到了sits_right_of(X, Y) 的事实(X 位于 Y 的右侧)。然后我写了下一条规则:
-
sits_left_of(X, Y) :- sits_right_of(Y, X)(X 位于 Y 的左侧); -
are_neighbors_of(X, Y, Z) :- sits_left_of(X, Z)(X 位于 Z 左侧,Y 位于 Z 右侧); -
next_to_each_other(X, Y) :- are_neighbors_of(_, X, Y); are_neighbors_of(X, _, Y)(X 位于 Y 旁边)。
我怎样才能知道坐在给定人右侧(或左侧)两个位置的人是谁?有没有像sits_right_of(sits_right_of(X, alex)) 这样的递归查询?我是否需要编写另一条规则来找出谁坐在远离某人的n 位置?
【问题讨论】:
标签: prolog