2

我正在尝试编写一个规则,该规则通过事实数据库并将每个事实的数字加在一起并将其保存到列表中:具体而言,这是一个问题:

根据问题 5 的答案编写一条规则,返回/显示在两个站点之间的旅程需要多长时间。

对问题 5 的回答:

time(Station1,Station2) :- overground(Station1,Station2,Time),
    overground(Station1,_,Time),
    overground(_,Station1,Time).
time(Station2,Station1) :- overground(Station2,Station1,Time),
    overground(Station2,_,Time),
    overground(_,Station2,Time).
time(Station1,Station2) :- overground(Station1,Station3,Time),
    time(Station3,Station2);
    overground(Station1,Station3,Time),
    time(Station2,Station3).
time(Station1,Station2) :- overground(Station1,_,Time),
    overground(_,Station2,Time).
time(Station1,Station2) :- overground(Station2,_,Time),
    overground(_,Station1,Time).

我尝试添加一个列表并将其附加“时间”,但没有运气。

*是的,它是一个分号。

还有另一个文件,其中包含所有地面站和时间,格式为“地上(X,Y,Z)”。即地上(肯顿,南肯顿,2)。其中显示了 station1、station2 以及从 1 到 2 所需的时间。

我正在尝试遍历整个数据库,找到 X 和 Y(问题 5 所做的),然后将两个站之间的所有 Z 相加并将它们放入一个列表中。

4

1 回答 1

1

好吧,老实说,您的问题 5 答案需要一些重构。我将首先为您提供一些关于同一主题问题链接

一旦你弄清楚如何处理这样的递归,你当前问题的答案应该很容易。

于 2011-12-18T23:08:20.653 回答