База знаний "Рабочая смена" - Prolog

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

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

Построить базу знаний “Рабочая смена”:Мария работает в дневную смену. Сергей работает в вечернюю смену. Борис работает в вечернюю смену. Валентина работает в вечернюю смену. Два служащих знают друг друга, если они работают в одну смену. Определить: Знает ли Сергей Бориса? Кого знает Валентина? Кого знает Мария?
Решила задачу, но не могу объяснить на языке SWI Prolog, помогите пожалуйста.

Решение задачи: «База знаний "Рабочая смена"»

textual
Листинг программы
% Мария работает в дневную смену. 
person("Maria","day").
% Сергей работает в вечернюю смену. 
person("Boris","night").      
% Борис работает в вечернюю смену. 
person("Sergay","night").
% Валентина работает в вечернюю смену.
person("Valentine","night").
% Два служащих X и Y знают друг друга (known), если 
%  X работает в смену M, Y работает в смену M и X не равен Y
known(X,Y):-person(X,M),person(Y,M),X=:=Y.

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

  1. Переменная person(X,M) используется для описания того, кто работает в смену M.
  2. Значение переменной known(X,Y) определяется как истинное, если X и Y работают в одну и ту же смену M, и X не равно Y.
  3. Переменная X имеет значение Maria, а переменная Y имеет значение Boris. Значит, они работают в одну и ту же смену, и поэтому known(Maria,Boris) будет истинным.
  4. Переменная X имеет значение Maria, а переменная Y имеет значение Sergay. Значит, они работают в одну и ту же смену, и поэтому known(Maria,Sergay) будет истинным.
  5. Переменная X имеет значение Maria, а переменная Y имеет значение Valentine. Значит, они работают в одну и ту же смену, и поэтому known(Maria,Valentine) будет истинным.

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


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

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

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