Задать вопрос
@vania93

Генетическое дерево в прологе, где я не прав?

Дано генетическое дерево
надо выяснить кто кому приходится шурин.
Шурин – брат жены.
90f041ba36e446b7a278c01df869daa7.png

сделал вот так
predicates
	parent (symbol, symbol)
	man (symbol)
	woman (symbol)
	shurin (symbol, symbol)
	suprugi (symbol, symbol)

clauses
   parent (barbara, liza).
   parent (valera, liza).
   parent (barbara, nikolay).
   parent (valera, nikolay).
   parent (anna, katya).
   parent (anna, petr).
   parent (srgey, katya).
   parent (srgey, petr).
   parent (tatiana, natali).
   parent (tatiana, mihail).
   parent (dmitry, natali).
   parent (dmitry, mihail).
   parent (liza, alex).
   parent (petr, alex).   
   parent (nikolay, raisa).
   parent (natali, raisa).
   parent (katya, alexandr).
   parent (mihail, alexandr).
   parent (katya, juli).
   parent (mihail, juli).
   parent (alex, kostya).
   parent (juli, kostya).
   parent (raisa, lyuda).
   parent (alexandr, lyuda).
   suprugi (barbara, valera).
   suprugi (anna, sergey).
   suprugi (tatiana, dmitry).
   suprugi (liza, petr).
   suprugi (nataly, nikolay).
   suprugi (katya, mihail).
   suprugi (raisa, alexandr).
   suprugi (juli, alex).
   suprugi (lyuda, kostya).
   man (valera).
   man (sergey).
   man (dmitry).
   man (nikolay).
   man (petr).
   man (mihail).
   man (alex).
   man (alexandr).
   man (lyda).
   woman (barbara).
   woman (anna).
   woman (tatiana).
   woman (liza).
   woman (katya).
   woman (nataly).
   woman (raisa).
   woman (juli).
   woman (lyuda).
   

shurin (y,x) :-
   parent (z,k),
   parent (z,y),
   suprugi (k,x),
   man (y).
   

goal
   shurin (y, x),
   write (y, "shurin", x).


но в результате ответа мне выводят просто "no"
где я ошибся?
заранее спасибо
  • Вопрос задан
  • 2737 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 1
SHVV
@SHVV
Основной код норм.
1. Переменные вроде как должны быть с заглавной буквы, иначе они считаются значениями.
2. В исходных данных у вас много опечаток, в результате sergey иногда srgey, natali - nataly, а kostya вообще не мужик. И т.д.
3. У вас получаются дубликаты, так как проверяются оба родителя. Если добавить проверку только одного родителя (например, только матери или отца), то дубликаты уйдут.
Как-то так.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы