Родственные связи, отношение родитель [turbo prolog]

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

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

только начали изучать пролог,первое задание,а я не знаю как делать помогите плиз Известна система родственных связей с отношением РОДИТЕЛЬ. Имена в ней не повторяются. Разработать программу логического вывода, позволяющую определить, кто кому приходится отцом, матерью, братом, сестрой, дядей, тетей, дедушкой, бабушкой.написать прогу нужно в TurboProlog

Решение задачи: «Родственные связи, отношение родитель [turbo prolog]»

textual
Листинг программы
PREDICATES
father(symbol,symbol)
mother(symbol,symbol)
woman(symbol)
man(symbol)
friend(symbol,symbol)
parent(symbol,symbol)
around(symbol,symbol)
CLAUSES
 
father(sasha,kostya).
father(sasha,masha).
father(sergey,natasha).
father(sergey, lena).
 
mother(toma,masha).
mother(toma,kostya).
mother(nina,natasha).
mother(nina,lena).
 
man(sasha).
man(sergey).
man(kostya).
 
 
woman(toma).
woman(nina).
woman(masha).
woman(natasha).
woman(lena).
woman(karina).
 
friend(sasha,sergey).
friend(sergey,sasha).
friend(sergey,toma).
friend(toma,nina).
friend(toma, sergey).
friend(nina,toma).
friend(karina,masha).
friend(masha,karina).
friend(X,Y):-parent(X,Z), parent(Y,Z).
 
parent(X,Y):-father(X,Y).
parent(X,Y):-mother(X,Y).
 
 
around(X,Y):-parent(X,Y); parent(Y,X),not(X=Y).
around(X,Y):-(mother(Z,X); father(Z,X)), (mother(Q,Y); father(Q,Y)), friend(Z,Q),not(X=Y),not(Z=Q).
around(X,Y):- friend(X,Y), not(X=Y).

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

  1. В коде используются следующие предикаты: father(symbol,symbol), mother(symbol,symbol), woman(symbol), man(symbol), friend(symbol,symbol), parent(symbol,symbol), around(symbol,symbol).
  2. Предикат father(symbol,symbol) означает, что первый символ является отцом второго.
  3. Предикат mother(symbol,symbol) означает, что первый символ является матерью второго.
  4. Предикат woman(symbol) означает, что символ является женщиной.
  5. Предикат man(symbol) означает, что символ является мужчиной.
  6. Предикат friend(symbol,symbol) означает, что первый символ является другом второго.
  7. Предикат parent(symbol,symbol) означает, что первый символ является родителем второго.
  8. Предикат around(symbol,symbol) означает, что первый символ находится рядом со вторым.
  9. В коде заданы следующие факты: father(sasha,kostya), father(sasha,masha), father(sergey,natasha), father(sergey, lena), mother(toma,masha), mother(toma,kostya), mother(nina,natasha), mother(nina,lena), man(sasha), man(sergey), man(kostya), woman(toma), woman(nina), woman(masha), woman(natasha), woman(lena), woman(karina), friend(sasha,sergey), friend(sergey,sasha), friend(sergey,toma), friend(toma,nina), friend(toma, sergey), friend(nina,toma), friend(karina,masha), friend(masha,karina).
  10. В коде используется следующая постановка задачи: определить, находятся ли два символа рядом друг с другом.
  11. Для определения этого используется предикат around(X,Y), который проверяет, является ли X родителем Y, или наоборот, является ли Y родителем X. Если это не так, то проверяется, являются ли X и Y друзьями, и если да, то проверяется, являются ли их общими друзьями какие-то символы. Если и это не так, то проверяется, являются ли X и Y просто друзьями. Если все эти условия не выполняются, то X и Y находятся рядом друг с другом.
  12. Код использует рекурсию для определения отношений между символами.
  13. В коде используется также предикат not(X=Y), который проверяет, не являются ли X и Y одним и тем же символом.
  14. В коде используется также предикат not(Z=Q), который проверяет, не являются ли Z и Q одним и тем же символом.
  15. В коде используется также предикат not(X=Y), который проверяет, не являются ли X и Y одним и тем же символом.
  16. В коде используется также предикат not(Z=Q), который проверяет, не являются ли Z и Q одним и тем же символом.
  17. В коде используется также предикат not(X=Y), который проверяет, не являются ли X и Y одним и тем же символом.
  18. В коде используется также предикат not(Z=Q), который проверяет, не являются ли Z и Q одним и тем же символом.
  19. В коде используется также предикат not(X=Y), который проверяет, не являются ли X и Y одним и тем же символом.
  20. В коде используется также предикат not(Z=Q), который проверяет, не являются ли Z и Q одним и тем же символом.

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


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

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

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