Доступ к элементам внутри скобок в Прологе - PullRequest
1 голос
/ 26 апреля 2020

Итак, у меня есть этот предикат 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 в третьем / последнем index.

Проблема в том, что я хочу получить доступ к элементам внутри скобок, и я знаю, если поставить (X,Y) = (a,1), я могу получить доступ к его элементам, дело в том, что это работает только для 1, и я хочу чтобы получить доступ ко всем из них, так что любой может сказать мне, как, потому что я не знаю, как это сделать.

1 Ответ

3 голосов
/ 27 апреля 2020

Вы можете определить

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].
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...