27.02.2009, 23:38 | #1 (permalink) |
Member
Регистрация: 05.02.2009
Сообщений: 2,602
Записей в дневнике: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 1165
|
Задача на ПРОЛОГ-Д
мама(Оля,Сергей) папа(Бронислав, Сергей) брат(Саня,Сергей) сестра(Наталья,Сергей) бабушка(Груня,Сергей) Описание родственников идет от имени Сергея, у его есть папа,мама, брат, сестра, бабушка. А как установить правило, что они все родственники, т.е. нужно задать вопрос кто является мамой у сестры Натальи, ну и получить ответ Оля. Вариант с описанием всех родственников не катит, т.к. "это слишком просто" |
27.02.2009, 23:38 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Возможно, данная тема уже решена ранее Задача по С + + Задача по С++ Задача |
03.03.2009, 13:31 | #2 (permalink) |
Member
Регистрация: 03.03.2009
Сообщений: 87
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 187
|
Вариант с описанием родственников не катит - имеется ввиду втупую прописать мама(Оля, Наталья) или имеется ввиду что-то другое?
Установить что они родственники - имеется ввиду полный набор? Просто есть набольшая проблема - бабушка она чья мама? Оли или Бронислава? Или нужно только для младшего поколения? |
03.03.2009, 22:36 | #3 (permalink) |
Member
Регистрация: 05.02.2009
Сообщений: 2,602
Записей в дневнике: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 1165
|
Фу, я думал никто не поможет. Вариант, что прописать типа:
мама(Оля,Сергей) мама(Оля,Саня) мама(Оля,Наталья) папа(Бронислав, Сергей) папа(Бронислав, Саня) папа(Бронислав, Наталья) брат(Саня,Сергей) брат(Сергей,Саня) и т.п. Не катит, т.к. больно просто, надо установить связь между всеми родственниками, что Саня Сергей и Наталья они друг другу братья и сестры, и что Оля и Бронислав являются тоже ссответсвенно мамой и папой Наталье и Сане, а бабушку выкинуть вобще можно. Связь родственников типа: мама(Оля,Сергей):-брат(Саня,Сергей) И чтоб потом можно было задать вопрос кто является мамой или папой Сани и Натальи. Вот. Связь я не знаю как установить, т.к. нам сказали делайте лабы и все. Перепробывал все варианты. |
04.03.2009, 12:37 | #4 (permalink) |
Member
Регистрация: 03.03.2009
Сообщений: 87
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 187
|
Тут нужно использовать переменные (начинаются с заглавных букв или с символа подчеркивания).
Для определения кто чья мама подойдёт такое описание: мама(X, Y) :- брат(Y, Z), мама(X, Z). мама(X, Y) :- сестра(Y, Z), мама(X, Z). Что по русски звучит "X - мама Y при условии, что Y - брат Z, а X - мама Z" И то же самое для сестры. Где-то через час будет минутка - напишу целиком код программы для определения кто чей мама\папа и сестра\брат. |
04.03.2009, 14:01 | #5 (permalink) |
Member
Регистрация: 03.03.2009
Сообщений: 87
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 187
|
В общем вот что получилось:
НО! Есть тут одна непонятка - написал прогу я исходя из того что ты в первом посте указал что всё описывается именно от имени Сергея. Соответственно всё работает при таком раскладе нормально, но если ты попробуешь сообщить ему факт где будет указан не Сергей - будет косяк. Сделал я это из расчета что бы не усложнять излишне прогу раз такие условия. Если это не так - пиши, чего-нить придумаем! Последний раз редактировалось csbwalker; 04.03.2009 в 14:34 |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
04.03.2009, 15:37 | #6 (permalink) |
Member
Регистрация: 05.02.2009
Сообщений: 2,602
Записей в дневнике: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 1165
|
Не, все гуд, даже если что-то не прокатит скажу чтоб объяснял тогда как пральна. Огромнейшее тебе СПАСИБО, никто вобще просто не знает как это сделать, выручил!
|
27.11.2009, 04:32 | #7 (permalink) |
Новичок
Регистрация: 27.11.2009
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
птица(x,y)<-взмах(x,y),птица(x,y);
взмах(x,y)<-вниз(x,y,1),вниз(x,y,0),вверх(x,y,1),вверх(x,y,0); вниз(x,y,c)<-сдв(x,y,z,t,u,v),ЛИНИЯ(z,y,u,y,1); вверх(x,y)<-сдв(x,y,z,t,u,v),ЛИНИЯ(x,y,z,t,1),ЛИНИЯ(x,y,u,v,1) ; сдв(x,y,z,t,u,v)<-сдп(x,y,z,t),сдл(x,y,u,v); сдп(x,y,z,t)<-СЛОЖЕНИЕ(x,5,z),СЛОЖЕНИЕ(t,5,y); сдл(x,y,z,t)<-СЛОЖЕНИЕ(z,5,x),СЛОЖЕНИЕ(t,5,y); дом(x,y)<-крыша(x,y,r,f), этаж(x,y,f); этаж(x,y,f)<-СЛОЖЕНИЕ(y,20,z),квадр(x,y,f,z); крыша(x,y,r,f)<-СЛОЖЕНИЕ(r,10,y),СЛОЖЕНИЕ(x,20,f),треуг(x,y,r,f); треуг(x,y,z,t)<-ЛИНИЯ(x,y,t,y,1),ДЕЛЕНИЕ2(x,t,f),угол(x,y,z,t,f); угол(x,y,z,t,f)<-ЛИНИЯ(x,y,f,z,1),ЛИНИЯ(f,z,t,y,1); ДЕЛЕНИЕ2(x,t,f)<-СЛОЖЕНИЕ(x,t,r),ДЕЛЕНИЕ(r,2,f); квадр(x,y,z,t)<-ЛИНИЯ(x,y,x,t,1),ЛИНИЯ(x,y,z,y,1),ч2(x,y,z,t); ч2(x,y,z,t)<-ЛИНИЯ(x,t,z,t,1),ЛИНИЯ(z,y,z,t,1); птица(x,y)<-взмах(x,y),птица(x,y); взмах(x,y)<-вниз(x,y,1),вниз(x,y,0),вверх(x,y,1),вверх(x,y,0); вниз(x,y,c)<-сдв(x,y,z,t,u,v),ЛИНИЯ(z,y,u,y,1); вверх(x,y)<-сдв(x,y,z,t,u,v),ЛИНИЯ(x,y,z,t,1),ЛИНИЯ(x,y,u,v,1) ; сдв(x,y,z,t,u,v)<-сдп(x,y,z,t),сдл(x,y,u,v); сдп(x,y,z,t)<-СЛОЖЕНИЕ(x,5,z),СЛОЖЕНИЕ(t,5,y); сдл(x,y,z,t)<-СЛОЖЕНИЕ(z,5,x),СЛОЖЕНИЕ(t,5,y); ?дом(70,110),птица(120,50); как это решать правильно на прологе -д ? ответ напишите на эл.почту |
27.11.2009, 04:33 | #8 (permalink) |
Новичок
Регистрация: 27.11.2009
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|