Родственные связи, отношение родитель [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).
Объяснение кода листинга программы
- В коде используются следующие предикаты: father(symbol,symbol), mother(symbol,symbol), woman(symbol), man(symbol), friend(symbol,symbol), parent(symbol,symbol), around(symbol,symbol).
- Предикат father(symbol,symbol) означает, что первый символ является отцом второго.
- Предикат mother(symbol,symbol) означает, что первый символ является матерью второго.
- Предикат woman(symbol) означает, что символ является женщиной.
- Предикат man(symbol) означает, что символ является мужчиной.
- Предикат friend(symbol,symbol) означает, что первый символ является другом второго.
- Предикат parent(symbol,symbol) означает, что первый символ является родителем второго.
- Предикат around(symbol,symbol) означает, что первый символ находится рядом со вторым.
- В коде заданы следующие факты: 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).
- В коде используется следующая постановка задачи: определить, находятся ли два символа рядом друг с другом.
- Для определения этого используется предикат around(X,Y), который проверяет, является ли X родителем Y, или наоборот, является ли Y родителем X. Если это не так, то проверяется, являются ли X и Y друзьями, и если да, то проверяется, являются ли их общими друзьями какие-то символы. Если и это не так, то проверяется, являются ли X и Y просто друзьями. Если все эти условия не выполняются, то X и Y находятся рядом друг с другом.
- Код использует рекурсию для определения отношений между символами.
- В коде используется также предикат not(X=Y), который проверяет, не являются ли X и Y одним и тем же символом.
- В коде используется также предикат not(Z=Q), который проверяет, не являются ли Z и Q одним и тем же символом.
- В коде используется также предикат not(X=Y), который проверяет, не являются ли X и Y одним и тем же символом.
- В коде используется также предикат not(Z=Q), который проверяет, не являются ли Z и Q одним и тем же символом.
- В коде используется также предикат not(X=Y), который проверяет, не являются ли X и Y одним и тем же символом.
- В коде используется также предикат not(Z=Q), который проверяет, не являются ли Z и Q одним и тем же символом.
- В коде используется также предикат not(X=Y), который проверяет, не являются ли X и Y одним и тем же символом.
- В коде используется также предикат not(Z=Q), который проверяет, не являются ли Z и Q одним и тем же символом.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д