我有一个谓词directTrain/2
,它定义了从A
到B
的直接路径。
给定一个知识库,我想定义一个谓词route(A,B,Route)
,它将结果作为包含从A
到B
的路径的列表形式。
我理解这与确定人A
是否是人B
的后代是一样的,所以我知道这个的是/否版本应该是这样的:
route(A,B) :-
directTrain(A,B).
route(A,B) :-
directTrain(A,C),
route(C,B).
我缺少的是理解如何使用3的arity,当第三个变量将累积最终路线时。 我想达到以下结果:
鉴于以下知识库......
directTrain(ny,la).
directTrain(la,paris).
directTrain(paris,rome).
......查询的答案......
route(ny,rome,R).
......应该是:
R = [ny,la,paris,rome]
我对Prolog很新,所以我希望我能从答案中学到很多东西。谢谢!