Поиск:

Ответ в темуСоздание новой темы Создание опроса
> помогите разобраться 
V
    Опции темы
Zorak
Дата 27.9.2008, 19:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 720
Регистрация: 13.11.2007

Репутация: нет
Всего: 3



Вот есть задача: смысл такой: нужно склать програму, которая подходилабы любому семейному дереву и  по которой можно былоб узнать всех своих родичей (братья, сестри, тьотки, дядьки и т п).. так вот, саму задачу сделал... выглядит вот так:
Код

domains
  s=symbol
predicates
  gin (s)
  chol(s)
  nash(s,s)
  tato(s,s)
  mama(s,s)
  did(s,s)
  baba(s,s)
  brat(s,s)
  sestra(s,s)
  dada(s,s)
  kuzen(s)
  kyzuna(s,s)
  batinbka(s,s)
  titka(s,s)
clauses
  gin(nina).
  gin(mariya).
  gin(oksana).
  gin(masha).
  gin(zina).
  chol(sasha).
  chol(did_kolya).
  chol(vitya).
  chol(kolya_did_sern).
  chol(ivan).
  chol(vasya).
  chol(kolya_batya).
  chol(dima).
  chol(ya).
  chol(edik).
  chol(artem).
  chol(ya).
  nash(ivan,kolya_did_sern).
  nash(ivan,zina).
  nash(vasya,kolya_did_sern).
  nash(vasya,zina).
  nash(kolya_batya,kolya_did_sern).
  nash(kolya_batya,zina).
  nash(mariya,nina).
  nash(mariya,did_kolya).
  nash(vitya,nina).
  nash(vitya,did_kolya).
  nash(sasha,nina).
  nash(sasha,did_kolya).
  nash(dima,ivan).
  nash(masha,vasya).
  nash(ya,kolya_batya).
  nash(oksana,kolya_batya).
  nash(ya,mariya).
  nash(oksana,mariya).
  nash(edik,vitya).
  nash(artem,sasha).
  tato(X,Y):-chol(X),nash(Y,X).
  mama(X,Y):-gin(X),nash(Y,X).
  did(X,Y):-tato(X,Z),nash(Y,Z).
  baba(X,Y):-mama(X,Z),nash(Y,Z).
  brat(X,Y):-chol(X),mama(Z,X),mama(Z,Y),tato(T,X),tato(T,Y),X<>Y.
  sestra(X,Y):-gin(X),tato(Z,X),tato(Z,Y),mama(T,X),mama(T,Y),X<>Y.
  
  batinbka(X,Y):-tato(X,Y);mama(X,Y).
  dada(X,Y):-brat(X,Z),batinbka(Z,Y).
  kuzen(X):-chol(X),dada(Z,Y),nash(X,Z);chol(X),titka(Z,Y),nash(X,Z).
  kyzuna(X,Y):-gin(X),dada(Z,Y),nash(X,Z).
  titka(X,Y):-sestra(X,Z),batinbka(Z,Y).

тут много недоработок, но коротко про код: 
1. я огласил всех своих членов семьи как принадлежность стати: gin(), chol().
2. огласил кто от кого походит, тоесть нащадки, например мою мать звать Мария, а отца Коля, поетому nash(ya, mariya). nash(ya, kolya_batya).
3. огласил правила для дядька, тьотки  и т п... Кузен: двоюродной брат и kyzuna: двоюродная сестра

Так вот, меня интересует Kuzen.. есть правило и ищет вроде правильно.. но не совсем... куча раз находит меня самого + по несколько раз ищет правильний результат.. вот уже неделю пытаюсь понять.. ПОЧЕМУ !!!! (.. прошк более знающих людей попытаться проникнуть в задачу и пояснить что я сделал не так и как сделать правильно ?...
З.Ы. заранее спасибо
З.Ы.Ы. если ктото чегото не понял.. говорите.. виложусь по иному


--------------------
Знание - сила. А сила есть, ума не надо...
Занимаюсь интернет бизнесом и ищу новых партнеров. Кому интересно - обращайтесь в ЛС, скайп или мыло.
PM MAIL ICQ   Вверх
Sergio02
Дата 28.9.2008, 23:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


СИпециалист
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 24.5.2006

Репутация: 1
Всего: 5



Сейчас пролога нет, проверить не могу, но я бы написал как-нибудь так:
Код

kuzen(X,Y):-chol(X),nash(Z,X),nash(W,Y),brat(Z,W),X<>Y.
kuzen(X,Y):-chol(X),nash(Z,X),nash(W,Y),sestra(Z,W),X<>Y.

Если chol-мужчина, nash-родитель.


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума Prolog
Void
  • Пожалуйста, создавайте темы с содержательными названиями.
  • Уважаемые учащиеся, здесь всегда рады помочь Вам, но не делать за Вас вашу работу. У вас гораздо больше шансов получить помощь, если Вы приложите усилия и поделитесь с нами проблемами и результатами. В противном случае добро пожаловать в раздел Центр Помощи.
  • Получив ответ на интересующий Вас вопрос, не забудьте пометить его как решённый.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Void.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Prolog | Следующая тема »


 




[ Время генерации скрипта: 0.0424 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.