list - 如何检查嵌套列表的两个元素是否在Prolog中是相同的索引?
问题描述
我想创建一个谓词 same_position(B,X,Y) 如果元素 X 和元素 Y 在其各自的嵌套列表中具有相同的位置,则该谓词为真。
例如,
same_position([[b,c,f],[a,d,g],[h,e]],c,d)
将返回 true。
解决方案
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.
因此,使用其他问题中的谓词非常简单。
推荐阅读
- user-interface - 使用 Flutter/Dart 构建自定义卡片
- java - 将 Unicode 字符“POPCORN”转义为 HTML 实体
- python - 用 2d 数组索引 3d numpy 数组
- c# - .Net Core Strings.Asc/Mid/Chr/Len 即使在导入 Microsoft.VisualBasic 后也丢失
- reactjs - 在 React Native Picker onValueChange 中设置状态时出错
- python - 是否有 Visual Studio Code 功能可以轻松查看 Python 的对象标识(内存位置)?
- javascript - 为什么这个 CSS 过渡只在某些点击时才能正常工作?如何解决?
- python - 将行编辑传递给上下文管理器以设置验证器
- javascript - 为什么从“gcs-browser-upload”导入上传失败?
- pygame - 您如何解决:“IndexError:列表索引超出范围”?