首页 > 解决方案 > 如何检查嵌套列表的两个元素是否在Prolog中是相同的索引?

问题描述

我想创建一个谓词 same_position(B,X,Y) 如果元素 X 和元素 Y 在其各自的嵌套列表中具有相同的位置,则该谓词为真。

例如,

same_position([[b,c,f],[a,d,g],[h,e]],c,d)将返回 true。

标签: listprolog

解决方案


same_position(L,E1,E2):-
    position(L,E1,N),
    position(L,E2,N).

position(LL,E,N):-
    member(L,LL),
    nth0(N,L,E).

?- same_position([[b,c,f],[a,d,g],[h,e]],c,d).
true

?- same_position([[b,c,f],[a,d,g],[h,e]],b,N).
N = b ;
N = a ;
N = h ;
false.

因此,使用其他问题中的谓词非常简单。


推荐阅读