База знаний "Рабочая смена" - 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.
Объяснение кода листинга программы
- Переменная person(X,M) используется для описания того, кто работает в смену M.
- Значение переменной known(X,Y) определяется как истинное, если X и Y работают в одну и ту же смену M, и X не равно Y.
- Переменная X имеет значение Maria, а переменная Y имеет значение Boris. Значит, они работают в одну и ту же смену, и поэтому known(Maria,Boris) будет истинным.
- Переменная X имеет значение Maria, а переменная Y имеет значение Sergay. Значит, они работают в одну и ту же смену, и поэтому known(Maria,Sergay) будет истинным.
- Переменная X имеет значение Maria, а переменная Y имеет значение Valentine. Значит, они работают в одну и ту же смену, и поэтому known(Maria,Valentine) будет истинным.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д