Prolog - 递归地添加到列表中

时间:2011-12-18 22:19:54

标签: list prolog rule

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

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

回答问题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).

我尝试添加一个列表并附加'Time',但没有运气。

*是的,它是一个分号。

还有另一个文件,它包含所有地上站点和时间格式为“overground(X,Y,Z)”。即地上(kenton,southkenton,2)。它显示了station1,station2以及从1到2所需的时间。

我正在尝试浏览整个数据库,查找X和Y(问题5确实如此),然后将两个站之间的所有Z加起来并将它们放入列表中。

1 个答案:

答案 0 :(得分:1)

嗯,说实话,你的问题5答案需要一些重构。首先,我会向links questions提供the subject {{3}}个{{3}}。

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