PDA

Просмотр полной версии : А вам слабо?


D1mOn
19.02.2006, 14:54
Загадка Энштейна

1. Есть 5 домов разного цвета.
2. В каждом доме живёт 1 человек: англичанин, немец, датчанин, норвежец, швед.
3. Каждый пьёт определённый напиток, курит определённую марку сигарет и держит животное.
4. Совпадений нет: т.е у каждого человека своё животное, своя марка сигарет и неповторяющийся напиток.
Вопрос:

Кому принадлежит рыба?

Подсказки:

1. Англичанин живёт в красном доме.
2. Швед держит собаку.
3. Датчанин пьёт чай.
4. Зелёный дом стоит справа от белого.
5. Жилец зелёного дома пьёт кофе.
6. Курящий Pall Mall держит птицу.
7. Жилец среднего дома пьёт молоко.
8. Жилец жёлтого дома курит Dunhill.
9. Норвежец живёт в 1-ом доме.
10. Курильщик Marlboro живет около того, кто держит кошку
11. Держащий лошадь живёт около того, кто курит Dunhill.
12. Курильщик Winfield пьёт пиво.
13. Норвежец живёт около голубого дома.
14. Немец курит Rothmans
15. Курильщик Marllboro живёт по соседству с тем, кто пьёт воду.

Ну вот собственно такая загадка. Попробуйте разгадать) Я сам ещё не разгадал, но у моей двадцатилетней сестры это получилось за 1 час 40 минут))) Ответа я тоже не знаю пока)

Jonathan Allen
19.02.2006, 15:07
Создаешь в SQL неколько таблиц с ключами и группами, таблицы групп, настраиваешь группы, связи, а потом фуячишь select с кучей join и получаешь результат

domains
loc = first; second; middle; third; last

predicates
left_neighbor(loc,loc)
next_to(loc,loc)
is_not(loc,loc)
first_to(loc,loc)
differ(loc,loc,loc,loc,loc)

clauses
left_neightbor(last,third).
left_neightbor(third,middle).
left_neightbor(middle,second).
left_neightbor(second,first).

next_to(x,y) :-
left_neightbor(x,y).
next_to(x,y) :-
left_neightbor(y,x).

right_to(x,y) :-
left_neightbor(x,y).
right_to(x,y) :-
left_neightbor(x,z), right_to(z,y).

is_not(x,y) :-
right_to(x,y).
is_not(x,y) :-
right_to(y,x).

differ(x1,x2,x3,x4,x5) :-
is_not(x1,x2), is_not(x1,x3), is_not(x1,x4), is_not(x1,x5),
is_not(x2,x3), is_not(x2,x4), is_not(x2,x5),
is_not(x3,x4), is_not(x3,x5),
is_not(x4,x5).

goal
Englishmen = Redhouse, % 1
Swede = Dogowner, % 2
Dutch = Teadrinker, % 3
left_neightbor(Greenhouse,Whitehouse), % 4
Coffeedrinker = Greenhouse, % 5
Pallmallsmoker = Birdyowner, % 6
Milkdrinker = middle, % 7
Dunhillsmoker = Yellowhouse, % 8
Norwegian = first, % 9
next_to(Marlborosmoker,Catowner), % 10
next_to(Dunhillsmoker,Horseowner), % 11
Winfieldsmoker = Beerdrinker, % 12
next_to(Norwegian,Bluehouse), % 13
German = Rothmanssmoker, % 14
next_to(Marlborosmoker,Waterdrinker), % 15
differ(Greenhouse,Yellowhouse,Redhouse,Whitehouse,
Bluehouse), % дома разные
differ(Fishowner,Catowner,Horseowner,Birdyowner,Do
gowner), % жывотные тоже разные
differ(Beerdrinker,Milkdrinker,Teadrinker,Coffeedr
inker,Waterdrinker), % напитков адинаковых нет
differ(Englishman,Swede,Norwegian,German,Dutch), % никакого космополитизъма
differ(Dunhillsmoker,Pallmallsmoker,Marlborosmoker
,Winfieldsmoker,Rothmanssmoker). % ахтунг!

Желтый. Синий... Красный. Зеленый Белый
Норвежe Датчанин Англичан Немец.. Швед
Кот.... Лошадь.. Птичка.. Рыбка.. Собака
Вода... Чай..... Молоко.. Кофе... Пиво
Dunhill Marlboro PallMall Rotmans Winfield

tclover
19.02.2006, 15:14
лоль......
antares :)

Zadoxlik
19.02.2006, 15:44
У немца ! Решал 40 минут

Нда, ну и тугодум)

Zadoxlik
19.02.2006, 15:50
кто жывотное сигареты пьет дом нумер
англ птица палмал молоко красный 3
датчанин лошадь марлборо чай голубой 2
немец РЫБА ротхманс кофе зеленый 5
норвежец кошка дунхилл вода желтый 1
швед собака венфиелд пиво белый 4


Если меня сглюкало, поправьте =)

NeMiNeM
19.02.2006, 16:12
1. Желтый 2. !Голубой! 3. Красный 4.!Белый! 5.!Зелёный!
Дunhill--------Лошадь ------ !Молоко!----- Winfield -- !Кофе!
!Норвежец! -- Мальборо ---- Англич -- -- Пиво --- Немец
Кошка ---- Датчанин ----- Птица --- -- Швед ----- Rothmans
Вода ------- Чай -------- PallMal ---- Собака ------РЫБКА

У немца..
Решил гдето за 35минут.. На самом деле не очень сложно=))

dinar_007
19.02.2006, 16:20
Я знаю ответ ))) Рыба у меня... Решил за пару секунд ))) У меня дома рыбки в аквариуме, дом жёлтый, курю честер, пью водку...

Zadoxlik
19.02.2006, 16:25
Отсюда вывод:
либо Энштейн был не так умен, как представляется
либо люди очень быстро эволюционируют
либо у нас тут собрались самые головастые парни Земли =)

D1mOn
19.02.2006, 16:28
думаю третье)))
ЗЫ и я думаю если Эйнштей хотел сделать сложней он бы сделал)

tclover
19.02.2006, 16:37
Я думаю что Эйнштейн не знал о sql :)

Zadoxlik
19.02.2006, 16:50
Я думаю что Эйнштейн не знал о sql :)

Это нечестно

tclover
19.02.2006, 16:54
Нечестно конечно. Со стороны нас было нечестно. Смысл загадки в том, что её нужно решить в уме. имхо.

k1b0rg
19.02.2006, 19:37
помойму логика программера и должна заключаться, как бы сделать быстрее и элегатнее, а не честно и очень долго =)))

ZaCo
19.02.2006, 19:44
ну я самый элегантный... посмотрел ответ за полсекнуды:)

Zadoxlik
19.02.2006, 22:18
Нет, программа за тебя все делает, надо мозг упражнять.

virgoz
19.02.2006, 23:46
ееееееее :)))
|норвежец|желтый|Dunhill|кошка| вода|
|датчанин|голубой|Marllboro|лош дь|чай|
|англичанин|красный|Pall Mall|птица|молоко|
|швед|белый|Winfileld|собака|пив о|
|немец|зеленый|Rothmans|рыба|ко е|