Задать предикат prince (X, Y) - Prolog

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

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

В общем, ребята суть такая имеется заданная база данных:
Необходимо задать предикат prince(X,Y) X был в числе Y, истинный, если: X был в диапазоне чисел от A до B и Y лежит между A и B или совпадает с A или B Пробовал так: prince(govern(X,A,B)). Y>=A. Y=<B. Естественно, неправильно. Можете подсказать решение данной задачи или хотя бы синтаксис ветвления?

Решение задачи: «Задать предикат prince (X, Y)»

textual
Листинг программы
prince(rodri).
prince(anaravd).
prince(hiwel_dda).
prince(lago_ad_idval).
prince(hiwel_ab_ieuaf).
prince(cadvallon).
prince(maredudd).
 
year(844,878).
year(878,916).
year(916,950).
year(950,979).
year(979,985).
year(985,986).
year(986,999).
 
govern(rodri,844,878).
govern(anaravd,878,916).
govern(hiwel_dda,916,950).
govern(lago_ad_idval,950,979).
govern(hiwel_ab_ieuaf, 979,985).
govern(cadvallon,985,986).
govern(maredudd, 986,999).
 
prince(X,Y):- year(X,Y), govern(X,Y,Z).
    
        
?- prince(cadvallon,986).
 
%?- prince(rodri,1979). 
%?- prince(X,900).
%?- prince(X,979). %(lago_ad_idval) (hiwel_ab_ieuaf)

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

В коде представлен логический программный скрипт на языке Prolog, который включает в себя три основных элемента:

  1. Предикат prince (X, Y), который описывает отношение между персоной с именем X и годом Y, где X - это имя персоны, а Y - год. Например, prince(rodri) означает, что Родри был принцем в некоторый год (который не указан в коде). Аналогично, prince(anaravd) означает, что Анарауд был принцем в некоторый год, и так далее.
  2. Предикат year (X, Y), который описывает отношение между двумя годами, где X - год начала, а Y - год окончания. Например, year(844,878) означает, что период с 844 по 878 год был периодом правления принца Родри. Аналогично, year(985,986) означает, что период с 985 по 986 год был периодом правления принца Кадваллана.
  3. Предикат govern (X, Y, Z), который описывает отношение между персоной X, годом начала Y и годом окончания Z, где X - это имя персоны, Y - год начала правления, а Z - год окончания правления. Например, govern(hiwel_dda,916,950) означает, что принц Хивел правил с 916 по 950 год. В конце кода представлен факт, который позволяет определить, когда принц Кадвалланан правил: govern(cadvallon,985,986). Вопрос ?- prince(cadvallon,986). проверяет, правиль ли принц Кадвалланан правил в 986 году. Ответ на этот вопрос будет да, так как в коде есть факт, подтверждающий это. Вопросы ?- prince(X,1979) и ?- prince(X,900) не имеют ответа, так как в коде нет информации о том, что какая-либо персона правила в эти годы. Вопрос ?- prince(X,979) может быть интерпретирован как правил ли принц Ланго в 979 году?. Ответ на этот вопрос будет да, так как в коде есть факт, подтверждающий это. Таким образом, в коде представлена информация о персонах, их правлении и годах, в которые они правили.

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


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

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

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