list - 在 Prolog 中访问括号内的元素
问题描述
所以我有这个谓词letras_comuns(Lst_Pals, Letras_comuns)
,其中Lst_Pals
是一个类似的列表,[[a,t,o],[a,c,o],[a,n,o]]
并且Letras_comuns
是一个列表,其中包含给定索引处每个单词中常见的所有元素,例如[(1,a), (3,o)]
。
例子:
?- Lst_Pals = [[a,t,o], [a,c,o], [a,n,o], [a,l,o]],
letras_comuns(Lst_Pals, Letras_comuns).
Lst_Pals = [[a, t, o], [a, c, o], [a, n, o], [a, l, o]],
Letras_comuns = [(a, 1), (o, 3)].
所以基本上这意味着所有单词在第一个索引和第三个/最后一个索引中Lst_pals
都有一个。a
o
问题是我想访问括号内的元素,我知道如果 put(X,Y) = (a,1)
我可以访问它的元素,问题是这只适用于1
并且我想访问所有这些元素,所以任何人都可以告诉我如何,因为我对如何做到这一点一无所知。
解决方案
你可以定义
p( (X,Y), X, Y ).
然后使用它:
?- p( (a,1), A, I ).
A = a,
I = 1.
或者
?- maplist( p, [(a, 1), (o, 3)], AS, IS).
AS = [a, o],
IS = [1, 3].
推荐阅读
- .htaccess - 301 将 www 版本重定向到非仅用于子目录
- php - 从按月和年过滤的数据库列中选择日期
- sed - 查找包含 UNIX 路径的行并从文件中对其进行注释
- javascript - 从外部 URL 上传 CSV 文件到 mysql
- java - 如何从java启动和杀死一个.net dll?
- reactjs - 情感风格的组件和 React.forwardRef 不能一起工作
- visual-foxpro - 如何将使用 DOS foxpro 中的选择命令的代码转换为 Visual Foxpro?
- c++ - 如何删除 QSplitter 中的所有孩子,但保留第一个孩子?
- javascript - Google Maps Heatmap 仅在热图数据被硬编码时有效,而不是在使用 for 循环生成时有效
- php - 领英上市公司职位