我是 Prolog 的新手。当存在从 X 到 Z 的路径(包括 X 到 Y 和 Y 到 Z)时,我正在尝试编写一个正确的谓词。
例如
foo(b,Y,[[a,b],[b,c],[b,d],[d,e]]).
Y = c ;
Y = d ;
Y = e ;
当存在从 X 到 Y 的路径时,我可以编写正确的代码,但如果基本情况为真,我无法弄清楚如何添加从 Y 到 Z 的代码。
foo(Y, X, [Y, X]).
foo(Y, X, [Head|_]) :- foo(Y, X, Head).
foo(Y, X, [_|Tail]) :- foo(Y, X, Tail).