Prolog 在两个列表中搜索两个元素
我有一个谓词搜索(a,b,c,d),如果a和b中的元素占据了对应的列表c和d,则该搜索保持不变 这是我的代码,但返回false:Prolog 在两个列表中搜索两个元素,prolog,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 corresp( X , [X|_] , Y , [Y|_] ) . corresp( X , Y
corresp( X , [X|_] , Y , [Y|_] ) .
corresp( X , Y , [_|Xs] , [_|Ys]) :- corresp( X , Xs , Y , Ys ) .
当X和Y在列表中时,返回false
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 ) .
空白和仔细的布局对代码(您自己的或其他人的)有很大帮助。认知科学表明,表格布局尤其有助于识别错误,因为与正常模式的偏差非常突出。为什么不
corresp(X,[[u124; Xs],Y,[[u124; Ys]):-corresp(X,Xs,Y,Ys)。
?@capelical我把它改成了你是如何做的,这就是我得到的:corresp(1,2,[2,3,1],[3,2])。错,对不起,你是对的。这是第一条要修改的条款corresp(X,Y,[X |,[Y |])。
您的第二个原始子句没有问题。@capelical很抱歉让人痛苦啊哈,我把它改成了那样,事情就这样发生了。。颜色(黄色,红色,[黄色,粉色,红色],[蓝色,红色])。错误。只有当黄色和红色是列表的标题时,它才起作用