在Prolog中访问括号内的元素

问题描述 投票:1回答:1

所以我有这个谓词 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 在第1个指数和第2个指数中的 o 的第3个最后索引中。

问题是,我想访问括号内的元素,我知道如果put (X,Y) = (a,1) 我可以访问它的元素,问题是,这只适用于 1 我想访问它们的全部,所以谁能告诉我怎么做,因为我不知道怎么做。

list prolog
1个回答
3
投票

你可以定义

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].
© www.soinside.com 2019 - 2024. All rights reserved.