Списки. Не могу проверить, пуст ли список - Prolog

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

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

Здравствуйте. Пишу лабу по прологу. Задание такое вывести список Пьес. Я написал код но в нем есть запинка. Я не могу проверить пуст ли список и закончить рекурсивные вызовы в этой строке get_by_ganre(_,[],_):-write("ПУСТО"). Почему то выдается ошибка что 3 параметр предиката не может быть связан. Помогите исправить пожалуйста. Вот код :
Предикат Connect для соединения списков Предикат WriteList для вывода списка алгоритм предиката get_by_ganre: Перебрать каждый элемент списка который возвращает предикат fillMainList. И в случае если в базе данных имеется книга с названием элемента этого списка то добавить этот элемент в новый список в противном случае не добавлять .

Решение задачи: «Списки. Не могу проверить, пуст ли список»

textual
Листинг программы
domains     
    list=string*
predicates
    book(string,string)
clauses          
    book("pessa","name1").
    book("verse","name2").
    book("pessa","name3").
    book("verse ","name4"). 
goal
       findall(X,book("pessa",X),L),write(L).

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

  1. domains — это часть кода, которая определяет типы данных, используемых в программе. В данном случае, список представлен как строка, содержащая элементы типа строка.
  2. predicates — это часть кода, которая определяет функции или отношения между переменными. В данном случае, определено два отношения: book(string,string), которое представляет собой отношение является книгой, где первый аргумент — название книги, а второй — имя автора.
  3. clauses — это часть кода, которая содержит правила или утверждения, которые программа должна проверить. В данном случае, утверждены четыре правила, каждое из которых утверждает, что определенная книга является книгой определенного автора.
  4. goal — это часть кода, которая определяет цель, которую должна достичь программа. В данном случае, программа должна найти все элементы, которые удовлетворяют отношению book(pessa,X), и сохранить их в списке L. Затем, программа должна вывести этот список.
  5. В данном коде нет прямой проверки на пустоту списка. Однако, если список L будет пустым, то программа не выведет никаких элементов и остановится после выполнения цели.

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


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

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

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