在两个列表中搜索两个元素

时间:2014-03-19 22:17:48

标签: prolog

我有一个谓词搜索(a,b,c,d),如果a和b中的元素占据了相应的列表C和D,那么它就会成立。

这是我的代码,但它返回false:

corresp( X , [X|_] , Y      , [Y|_] ) .
corresp( X , Y     , [_|Xs] , [_|Ys]) :- corresp( X , Xs , Y , Ys ) . 

当X和Y在列表

中时,它返回false

1 个答案:

答案 0 :(得分:0)

您的代码示例:

corresp( X , [X|_] , Y      , [Y|_] ) .
corresp( X , Y     , [_|Xs] , [_|Ys]) :- corresp( X , Xs , Y , Ys ) . 

不一致。尝试

corresp( X , Y , [X|_] , [Y|_] ).
corresp( X , Y , [_|A] , [_|B] ) :- corresp( X , Y , A , B ) .

空白和精心布局在grokking代码(您自己或其他人的代码)中有很大帮助。认知科学表明,特别是表格布局有助于识别错误,因为与正常模式的偏差突出。