Определить отношения и найти родственников, удовлетворяющих ему: дедушка, внук - Prolog
Формулировка задачи:
Помогите найти ошибки:
Определить отношения и найти родственников, удовлетворяющих ему: дедушка, внук. Пролог - SWI
Листинг программы
- male(ivan).
- male(innokentiy).
- male(ilusha).
- male(igor).
- male(max).
- male(john).
- female(olga).
- female(oksana).
- female(olesya).
- female(vika).
- female(ira).
- female(lola).
- child(X,Y):-parent(Y,X).
- parent(ilusha,igor).
- parent(vika,igor).
- parent(igor,olga).
- parent(oksana,olga).
- parent(ilusha,olesya).
- parent(vika,olesya).
- sister(X,Y):-female(Y),parent(Y,G),parent(X,M),G=M,!;female(X),parent(X,G),parent(Y,M),G=M.
- wedding(igor,oksana).
- wedding(oksana,igor).
- vnuk(X,Y):-male(X),female(Y),wedding(X,H),sister(Y,H),!;male(X),female(Y),wedding(Y,H),sister(X,H),!.
- granddad(X,Y):-male(X),child(Y,H),child(H,X).
Решение задачи: «Определить отношения и найти родственников, удовлетворяющих ему: дедушка, внук»
textual
Листинг программы
- vnuk(X,Y) :- male(X), child(Y,W), child(W,X). %% X - это внук Y
Объяснение кода листинга программы
- vnuk(X,Y) :- male(X), child(Y,W), child(W,X).
- В данной строке кода определен факт vnuk, который гласит, что X является внуком Y.
- Для того чтобы X был внуком Y, необходимо выполнение трех условий:
- X должен быть мужчиной (male(X)).
- Y должен быть родителем какого-то человека (child(Y,W)).
- Этот человек должен быть родителем X (child(W,X)).
- Таким образом, X является внуком Y, если он является мужчиной и если Y является родителем какого-то человека, который в свою очередь является родителем X.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д