Как написать программу Prolog - PullRequest
0 голосов
/ 20 сентября 2018

Я не знаю, как написать программу Prolog для следующего сценария.

1. If any two person having same hobby then  they like each other.
2. Every gardener likes the Sun.

Я сделал это, но я не знаю, правильно ли это или нет.

like(gardener,sun).

Пожалуйста, помогите мне решить.

1 Ответ

0 голосов
/ 20 сентября 2018

Правила Пролога следуют шаблону «обратный IF»:

Head :- Goal1, ..., GoalN.

означает (примерно), «Head содержит , если Goal1, ..., GoalN все держат ".

Поставить наоборот:" , если Goal1, ..., GoalN все удерживать, , затем Head также содержит ".

Это точно соответствует вашему первому предложению, поэтому оно может быть закодировано как правило:

likes(A, B) :-                   % Head :-
    hobby( A, HobbyA),           %   Goal1,
    hobby( B, HobbyB),           %   Goal2,
    same( HobbyA, HobbyB),       %   Goal3,
    dif( A, B).                  %   Goal4.
    % different persons, not the same one

Второе предложение также соответствует тому же шаблону:

likes(A, sun) :-
    isA(A, gardner).

С наиболее естественной кодировкой isA( X, Y) как просто объединением X = Y, это становится эквивалентным тому, что вы написали.Факты - это правила без тела.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...