首页 > 解决方案 > 在 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都有一个。ao

问题是我想访问括号内的元素,我知道如果 put(X,Y) = (a,1)我可以访问它的元素,问题是这只适用于1并且我想访问所有这些元素,所以任何人都可以告诉我如何,因为我对如何做到这一点一无所知。

标签: listprolog

解决方案


你可以定义

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].

推荐阅读