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

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

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

В общем, ребята суть такая имеется заданная база данных:
Листинг программы
  1. govern(rodri,844,878).
  2. govern(anaravd,878,916).
  3. govern(hiwel_dda,916,950).
  4. govern(lago_ab_idval,950,979).
  5. govern(hiwel_ab_ieuaf,979,985).
  6. govern(cadvallon,985,986).
  7. govern(maredud,986,999).
Необходимо задать предикат 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
Листинг программы
  1. prince(rodri).
  2. prince(anaravd).
  3. prince(hiwel_dda).
  4. prince(lago_ad_idval).
  5. prince(hiwel_ab_ieuaf).
  6. prince(cadvallon).
  7. prince(maredudd).
  8.  
  9. year(844,878).
  10. year(878,916).
  11. year(916,950).
  12. year(950,979).
  13. year(979,985).
  14. year(985,986).
  15. year(986,999).
  16.  
  17. govern(rodri,844,878).
  18. govern(anaravd,878,916).
  19. govern(hiwel_dda,916,950).
  20. govern(lago_ad_idval,950,979).
  21. govern(hiwel_ab_ieuaf, 979,985).
  22. govern(cadvallon,985,986).
  23. govern(maredudd, 986,999).
  24.  
  25. prince(X,Y):- year(X,Y), govern(X,Y,Z).
  26.    
  27.        
  28. ?- prince(cadvallon,986).
  29.  
  30. %?- prince(rodri,1979).
  31. %?- prince(X,900).
  32. %?- 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы