Создать предикат проекции множества - Prolog

Узнай цену своей работы

Формулировка задачи:

Помогите, пожалуйста, правильно составить предикат. Проекция множества - это операция, применяемая к множеству n-арных отношений и возвращает множество всех элементов, стоящих на k-ом месте всех n-ок - элементов исходного множества. Например: А = [("func07","func01"),("func05","func05"),("func03","func04"),("func01","func01"),("func07","func08"),("func01","func04"), ("func01","func05")] Proj(1,A) = ["func07","func05","func03","func01","func07"] Proj(2,A) = ["func01","func05","func04","func08"] Пробовал реализовать на PDC Prolog через рекурсию без параметризации, введя дополнительный предикат "малая проекция" - возвращает элемент n-ки и стандартный предикат "быть элементом списка".
Пролог ругается на предикат sProj, что не определена переменная. И ругается на первое и третье правило bProj_1. Как правильно сделать, используя отсечения, чтоб и эффективно было.

Решение задачи: «Создать предикат проекции множества»

textual
Листинг программы
?- X =.. [(1,2,3)].
X = (1, 2, 3).
 
?- X =.. [a,(1,2,3)].
X = a((1, 2, 3)).
 
?- X =.. [1,2,3].
ERROR: =../2: Type error: `atom' expected, found `1'

Объяснение кода листинга программы

  1. В первом предложении задаётся вопрос на вывод переменной X, которая является списком кортежей.
  2. Во втором предложении задаётся вопрос на вывод переменной X, которая является списком с одним элементом — кортежем (1,2,3).
  3. В третьем предложении задаётся вопрос на вывод переменной X, которая является списком с одним элементом — строкой a.
  4. В четвёртом предложении задаётся вопрос на вывод переменной X, которая является списком с одним элементом — строкой 1.
  5. В пятом предложении выводится сообщение об ошибке, так как переменная 1 не является атомом, а списки могут содержать только атомы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.167 из 5
Похожие ответы