Автор |
Сообщение |
СовестьПользователь
Сообщения: 413 Регистрация: 14.04.2004
|
|
Добавлено: Пт Июл 02, 2004 14:30 |
|
|
Условие:
1. Есть 5 домов.
2. В каждом доме живет по одному человеку отличной от другого национальности.
3. Каждый жилец пьет только один определенный напиток, курит определенную марку сигарет и держит животное.
4. Hикто из пяти человек не пьет одинаковые напитки, не курит одинаковые сигареты и недержит одинаковых животных.
Вопрос: Чья рыба?
Подсказки:
1. Англичанин живет в красном доме.
2. Швед держит собаку.
3. Датчанин пьет чай.
4. Зеленой дом стоит слева от белого.
5. Жилец зеленого дома пьет кофе.
6. Человек, который курит Pallmall, держит птицу.
7. Жилец среднего дома пьет молоко.
8. Жилец из желтого дома курит Dunhill.
9. Hорвежец живет в первом доме.
10. Курильщик Marlboro живет около того, кто держит кошку.
11. Человек, который содержит лошадь, живет около того, кто курит Dunhill.
12. Курильщик Winfield пьет пиво.
13. Hорвежец живет около голубого дома.
14. Hемец курит Rothmans.
15. Курильщик Marlboro живет по соседству с человеком, который пьет воду.
|
|
|
|
|
|
ХеймдалльПользователь
Сообщения: 2412 Регистрация: 03.03.2004
|
|
Добавлено: Пт Июл 02, 2004 15:48 |
|
|
|
|
|
|
|
ХеймдалльПользователь
Сообщения: 2412 Регистрация: 03.03.2004
|
|
Добавлено: Пт Июл 02, 2004 16:02 |
|
|
1. Англичанин живет в красном доме.
2. Швед держит собаку.
3. Датчанин пьет чай.
4. Зеленой дом стоит слева от белого.
5. Жилец зеленого дома пьет кофе.
6. Человек, который курит Pallmall, держит птицу.
7. Жилец среднего дома пьет молоко.
8. Жилец из желтого дома курит Dunhill.
9. Hорвежец живет в первом доме.
10. Курильщик Marlboro живет около того, кто держит кошку.
11. Человек, который содержит лошадь, живет около того, кто курит Dunhill.
12. Курильщик Winfield пьет пиво.
13. Hорвежец живет около голубого дома.
14. Hемец курит Rothmans.
15. Курильщик Marlboro живет по соседству с человеком, который пьет воду
Фатор1. Люди : Англичанин (А), Норвежец (Но), Немец(Не), Датчанин (Д), Швед (Ш).
Фатор2. Дома : К, З, Б, Ж, Г
Фатор3. Расположение домов : 1,2,3,4,5
Фатор4. Сигареты : М, R, D, P ,W
Фатор5. Напитки : Ч, К, М, П, В
Фатор6. Животные : С, П, Л, К, РЫБА
Для связывания 5^6 нужно как минимум 30 условий вида ФакторX::ФакторY.
Их тут 15.
|
|
|
|
|
|
ЛохматычПользователь
Сообщения: 1226 Регистрация: 03.10.2002 Откуда: из холодильника
|
|
Добавлено: Пт Июл 02, 2004 16:22 |
|
|
Локи, ты как будто только сегодня родился. Не говорю уж про инет в целом, но только на этом форуме задачка всплывала минимум дважды. Если лень самому найти правильный ответ, покопайся в хистори.
А формулу твою с удовльствием подправлю. Условия то не просто парные, а пересекающиеся, взаимоисключающие и взаимозависимые. Короч, решительно задвигай сомнения на совесть автора задачки (не путать автора с просто Совестью) и сосредоточься на решении.
|
|
|
|
|
|
ХеймдалльПользователь
Сообщения: 2412 Регистрация: 03.03.2004
|
|
Добавлено: Пт Июл 02, 2004 16:29 |
|
|
А... попробую. Но проще прогу написать, дабы она ассоциативно решение нашла
|
|
|
|
|
|
ХеймдалльПользователь
Сообщения: 2412 Регистрация: 03.03.2004
|
|
Добавлено: Пт Июл 02, 2004 18:40 |
|
|
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "main.h"
#include <alloc.h>
#define AS AnsiString
#define DA DynamicArray
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
class TAssoc;
class TSuspicionKernel;
class TSuspicion
{
public:
TAssoc* Assoc; // ôàêòîð ñâÿçûâàíèÿ
bool TrueLinked; // ìîæíî òî÷íî ãîâîðèòü, ÷òî ôàêòîð ñâÿçàí
bool TrueUnlinked; // ìîæíî òî÷íî ãîâîðèòü, ÷òî ôàêòîð ïðîòèâîïîñòàâëåí
/*
TrueLinked è TrueUnlinked ìîãóò áûòü îáà false - òîãäà ïîäîçðåíèÿ (ò.å.
ðåêóðñèâíîå âõîæäåíèå)
Îíè íå ìîãóò áûòü îáà true - èíà÷å ïðîòèâîðå÷èå â çàäà÷å
*/
};
class TAssoc
{
public:
AnsiString Name;
DA<TSuspicion> Logic;
bool __fastcall TrueLink(AnsiString s2);
bool __fastcall TrueUnlink(AnsiString s2);
void __fastcall Clear();
};
class TGebo
{
bool Link; // true åñëè ñâÿçü àáñîëþòíà, false åñëè ïîëíàÿ äèñàññîöèàÿ
bool Except; // true åñëè îøèáêà â çàäàíèè
bool Multiple; // true åñëè íåñêîëüêî ðåøåíèé
TFactor* Factor1;
TFactor* Factor2;
};
class TGeboKernel
{
private:
long __fastcall SuspectUnlink(); // òî, ÷åãî áûòü â ïðèíöèïå íå ìîæåò
long __fastcall SuspectLink(); // äåëàåò ÿâíûå âûâîäû
long __fastcall Suspect(DA<TGebo> G);
public:
DA<TFactor> Factors;
DA<TGebo> Gebo;
void __fastcall TGeboKernel()
{
Clear();
};
void __fastcall Clear();
void __fastcall REG(AS s);
bool __fastcall IFLINK(AnsiString s1[]);
bool __fastcall AND(AnsiString s1[]);
bool __fastcall NOT(AnsiString s1[]);
bool __fastcall LINK(AnsiString s1[]);
bool __fastcall IFLINK(AnsiString s1[]);
bool __fastcall AND(AnsiString s1[]);
bool __fastcall NOT(AnsiString s1[]);
bool __fastcall LINK(AnsiString s1[]);
long __fastcall Compile();
};
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TGeboKernel* kern = new TGeboKernel();
// îïèñûâàåì ïîñòàíîâêó çàäà÷è
kern->REG("Äàò÷àíèí");
kern->REG("Íåìåö");
kern->REG("Øâåä");
kern->REG("Íîðâåæåö");
kern->REG("Àíãëè÷àíèí");
kern->NOT("Äàò÷àíèí","Íåìåö","Øâåä","Íîðâåæåö","Àíãëè÷àíèí");
kern->REG("1");
kern->REG("2");
kern->REG("3");
kern->REG("4");
kern->REG("5");
kern->NOT("1","2","3","4","5");
kern->REG("Êðàñíûé");
kern->REG("Çåëåíûé");
kern->REG("Áåëûé");
kern->REG("Ãîëóáîé");
kern->REG("Æåëòûé");
kern->NOT("Êðàñíûé","Çåëåíûé","Áåëûé","Ãîëóáîé","Æåëòûé");
// óñëîâèÿ çàäà÷è
//1. Àíãëè÷àíèí æèâåò â êðàñíîì äîìå.
kern->LINK("Àíãëè÷àíèí", "Êðàñíûé");
//2. Øâåä äåðæèò ñîáàêó.
kern->LINK("Øâåä", "Ñîáàêà");
//3. Äàò÷àíèí ïüåò ÷àé.
kern->LINK("Äàò÷àíèí", "×àé");
//4. Çåëåíîé äîì ñòîèò ñëåâà îò áåëîãî.
kern->OR(
kern->AND(kern->IFLINK("Çåëåíûé", "1"),kern->IFLINK("Áåëûé", "2")),
kern->AND(kern->IFLINK("Çåëåíûé", "2"),kern->IFLINK("Áåëûé", "3")),
kern->AND(kern->IFLINK("Çåëåíûé", "3"),kern->IFLINK("Áåëûé", "4")),
kern->AND(kern->IFLINK("Çåëåíûé", "4"),kern->IFLINK("Áåëûé", "5"))
);
//5. Æèëåö çåëåíîãî äîìà ïüåò êîôå.
kern->LINK("Çåëåíûé", "Êîôå");
//6. ×åëîâåê, êîòîðûé êóðèò Pallmall, äåðæèò ïòèöó
kern->LINK("Pallmall", "Ïòèöà");
//7. Æèëåö ñðåäíåãî äîìà ïüåò ìîëîêî.
kern->LINK("3", "Ìîëîêî");
//8. Æèëåö èç æåëòîãî äîìà êóðèò Dunhill.
kern->LINK("Æåëòûé", "Dunhill");
//9. Hîðâåæåö æèâåò â ïåðâîì äîìå.
kern->LINK("Íîðâåæåö", "1");
//10. Êóðèëüùèê Marlboro æèâåò îêîëî òîãî, êòî äåðæèò êîøêó.
kern->OR(
kern->AND(kern->IFLINK("Marlboro", "1"),kern->IFLINK("Êîøêà", "2")),
kern->AND(kern->IFLINK("Marlboro", "2"),kern->IFLINK("Êîøêà", "3")),
kern->AND(kern->IFLINK("Marlboro", "3"),kern->IFLINK("Êîøêà", "4")),
kern->AND(kern->IFLINK("Marlboro", "4"),kern->IFLINK("Êîøêà", "5")),
kern->AND(kern->IFLINK("Marlboro", "5"),kern->IFLINK("Êîøêà", "4")),
kern->AND(kern->IFLINK("Marlboro", "4"),kern->IFLINK("Êîøêà", "3")),
kern->AND(kern->IFLINK("Marlboro", "3"),kern->IFLINK("Êîøêà", "2")),
kern->AND(kern->IFLINK("Marlboro", "2"),kern->IFLINK("Êîøêà", "1"))
);
//11. ×åëîâåê, êîòîðûé ñîäåðæèò ëîøàäü, æèâåò îêîëî òîãî, êòî êóðèò Dunhill.
kern->OR(
kern->AND(kern->IFLINK("Dunhill", "1"),kern->IFLINK("Ëîøàäü", "2")),
kern->AND(kern->IFLINK("Dunhill", "2"),kern->IFLINK("Ëîøàäü", "3")),
kern->AND(kern->IFLINK("Dunhill", "3"),kern->IFLINK("Ëîøàäü", "4")),
kern->AND(kern->IFLINK("Dunhill", "4"),kern->IFLINK("Ëîøàäü", "5")),
kern->AND(kern->IFLINK("Dunhill", "5"),kern->IFLINK("Ëîøàäü", "4")),
kern->AND(kern->IFLINK("Dunhill", "4"),kern->IFLINK("Ëîøàäü", "3")),
kern->AND(kern->IFLINK("Dunhill", "3"),kern->IFLINK("Ëîøàäü", "2")),
kern->AND(kern->IFLINK("Dunhill", "2"),kern->IFLINK("Ëîøàäü", "1"))
);
//12. Êóðèëüùèê Winfield ïüåò ïèâî.
kern->LINK("Winfield", "Ïèâî");
//13. Hîðâåæåö æèâåò îêîëî ãîëóáîãî äîìà.
kern->LINK("Íîðâåæåö", "Ãîëóáîé");
//14. Håìåö êóðèò Rothmans.
kern->LINK("Íåìåö", "Rothmans");
//15. Êóðèëüùèê Marlboro æèâåò ïî ñîñåäñòâó ñ ÷åëîâåêîì, êîòîðûé ïüåò âîäó
kern->LINK("Marlboro", "Âîäà");
/* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Ç À Ï Ó Ñ Ê À Å Ì
kern->Compile();
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! */
long count = kern->Compile();
if(count<0)ShowMessage("Îøèáêà âî âðåìÿ ââåäåíèÿ ïàðàìåòðîâ");
else if(count==0)ShowMessage("Ó çàäà÷è íåò ðåøåíèÿ. Îíà ïðîòèâîðå÷èò ñàìîé ñåáå");
else if(count==1)ShowMessage("Ó çàäà÷è åñòü åäèíñòâåííîå ðåøåíèå");
else ShowMessage("Ó çàäà÷è åñòü íåñêîëüêî ðåøåíèé");
delete kern;
}
//---------------------------------------------------------------------------
|
|
|
|
|
|
ХеймдалльПользователь
Сообщения: 2412 Регистрация: 03.03.2004
|
|
Добавлено: Пт Июл 02, 2004 18:46 |
|
|
Прога пока не дописана. Как только допишу - сразу выложу на сайтик с исходниками и результатами вычислений.
на http://loki-and-sandman.narod.ru.
Пока там только маленькая программка есть. Кто хочет - скачивайте
|
|
|
|
|
|
СовестьПользователь
Сообщения: 413 Регистрация: 14.04.2004
|
|
Добавлено: Ср Июл 07, 2004 12:59 |
|
|
Ответ
Норвежец в желтом доме содержит кошку, пьет воду и курит Dunhill
Датчанин в голубом доме содержит лошадь, пьет чай и курит Marlboro
Англичанин в красном доме содержит птицу, пьет молоко и курит Pallmall
Немец в зеленом доме содержит РЫБУ, пьет кофе и курит Rothmans
Швед в белом доме содержит собаку, пьет пиво и курит Winfield
Рыба немецкая...
|
|
|
|
|
|
KonflictПользователь
Сообщения: 92 Регистрация: 23.07.2004 Откуда: ::zion::
|
|
Добавлено: Сб Июл 24, 2004 00:08 |
|
|
а почема? объясните а то как шизо сижу ни хрена
ни врубаю
|
|
|
|
|
|
UnderboatПользователь
Сообщения: 2686 Регистрация: 23.09.2002
|
|
Добавлено: Сб Июл 24, 2004 00:19 |
|
|
По слухам энту задачу придумал Эйнштейн и сазал, что 95% людев не в состоянии ее решить.....
|
|
|
|
|
|
KonflictПользователь
Сообщения: 92 Регистрация: 23.07.2004 Откуда: ::zion::
|
|
Добавлено: Пн Июл 26, 2004 11:10 |
|
|
Я думаю Эйнштейн входил в эти 95 %
|
|
|
|
|
|
|
Добавлено: Пн Июл 26, 2004 15:25 |
|
|
Если нумерация домов слева направо, то выходит так.
№1: норвежец, желтый, вода, Dunhill, кошка
№2: датчанин, чай, Marlboro, лошадь
№3: англичанин, красный, молоко, Pallmall, птица
№4: немец, зеленый, кофе, Rothmans, рыба
№5: швед, пиво, Winfield, собака
Рыба у немца из дома №4.
--
Цитата: |
а почема? объясните а то как шизо сижу ни хрена
ни врубаю
|
Можно нарисовать 5 домиков и подписывать условия. Исключать невозможное.
Например, в доме №1 живет норвежец.
Этот дом не белый. Не красный (в красном англичанин).
Рядом голубой. Значит, и не зеленый. То есть, желтый.
Жилец из желтого дома курит Dunhill.
Человек, который содержит лошадь, живет около того, кто курит Dunhill. Значит, у соседа из №2 - лошадь.
Пьет норвежец: не чай (его пьет датчанин), не молоко (это у среднего), не кофе (его пьет житель зеленого), не пиво (его пьет курильщик Winfiled).
И так далее заполнять информацию по всем домикам. У кого терпения хватит, в самом конце доберется до рыбы...
|
|
|
|
|
|
|
Добавлено: Пн Июл 26, 2004 15:25 |
|
|
Если нумерация домов слева направо, то выходит так.
№1: норвежец, желтый, вода, Dunhill, кошка
№2: датчанин, чай, Marlboro, лошадь
№3: англичанин, красный, молоко, Pallmall, птица
№4: немец, зеленый, кофе, Rothmans, рыба
№5: швед, пиво, Winfield, собака
Рыба у немца из дома №4.
--
Цитата: |
а почема? объясните а то как шизо сижу ни хрена
ни врубаю
|
Можно нарисовать 5 домиков и подписывать условия. Исключать невозможное.
Например, в доме №1 живет норвежец.
Этот дом не белый. Не красный (в красном англичанин).
Рядом голубой. Значит, и не зеленый. То есть, желтый.
Жилец из желтого дома курит Dunhill.
Человек, который содержит лошадь, живет около того, кто курит Dunhill. Значит, у соседа из №2 - лошадь.
Пьет норвежец: не чай (его пьет датчанин), не молоко (это у среднего), не кофе (его пьет житель зеленого), не пиво (его пьет курильщик Winfiled).
И так далее заполнять информацию по всем домикам. У кого терпения хватит, в самом конце доберется до рыбы...
|
|
|
|
|
|
ЛиккиПользователь
Сообщения: 324 Регистрация: 21.07.2004
|
|
Добавлено: Пн Июл 26, 2004 15:27 |
|
|
Вот почему при попытке послать ответ из форма выбрасывает - это задачка похитрее
|
|
|
|
|
|
|
Добавлено: Пн Июл 26, 2004 15:38 |
|
|
патамушта нечего над одним ответом по полчаса думать
не сохраняицца стока па времени твоя портофилия
|
|
|
|
|
|
ЛиккиПользователь
Сообщения: 324 Регистрация: 21.07.2004
|
|
Добавлено: Пн Июл 26, 2004 15:57 |
|
|
Ну, каюсь. Задачки на внимание - не мой профиль: то условие потеряется, мысли о другом в головуполезут
|
|
|
|
|
|
|
|
|
Страница 1 из 1 |
|
|
|