Страница: 1 |
Страница: 1 |
Вопрос: Задача от Эйнштейна
Добавлено: 09.09.09 09:57
Автор вопроса:
AngryBadger
Возможно бойан, но предлагаю попробовать решить эту задачу программным путем, т.е. так чтобы схожие задачи имеющие решение можно было решить посредством того же кода с минимальным его изменением.
Итак задача:
Пять человек разной национальности живут в 5 домах разного цвета, курят разные сигареты, выращивают разных животных и пьют разные напитки.
Известно что:
1. Норвежец живет в первом доме
2. Англичанин живет в красном доме
3. Зеленый дом находится слева от белого
4. Датчанин пьет чай
5. Тот, кто курит Rothmans, живет рядом с тем, кто выращивает кошек
6. Тот, кто живет в желтом доме, курит Dunhill
7. Немец курит Marlboro
8. Тот, кто живет в центре, пьет молоко
9. Сосед того, кто курит Rothmans, пьет воду
10. Тот, кто курит PallMal, выращивает птиц
11. Швед выращивает собак
12. Норвежец живет рядом с синим домом
13. Тот, кто выращивает лошадей, живет в синем доме
14. Тот, кто курит Philip Morris, пьет пиво
15. В зеленом доме пьют кофе
Ну что, как вы думаете, возможно?
Ответы
Всего ответов: 11
Номер ответа: 1
Автор ответа: AngryBadger
Вопросов: 33
Ответов: 245
Профиль | | #1
Добавлено: 09.09.09 12:45
Ах да, забыл указать сам вопрос - кто выращивает рыбок?
Номер ответа: 2
Автор ответа: Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #2
Добавлено: 09.09.09 14:33
Тоже хотел написать такую программу, так что буду рад, если кто-нибудь сделает это за меня (желательно на C++). Основная сложность в записи высказываний 3, 5 и 12. Могу проконсультировать по аське.
Номер ответа: 3
Автор ответа: Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #3
Добавлено: 09.09.09 14:37
http://darnley.livejournal.com/25666.html
Для тестирования
Номер ответа: 4
Автор ответа: AWP
ICQ: 345685652
Вопросов: 96
Ответов: 1212
Web-сайт:
Профиль | | #4
Добавлено: 09.09.09 15:53
AngryBadger
Вообще это не очень сложная задача, если есть ручка и бумажка. Таким способом не больше пяти минут уйдёт на неё.
Вообще, немец любит рыбок.
Номер ответа: 5
Автор ответа: AngryBadger
Вопросов: 33
Ответов: 245
Профиль | | #5
Добавлено: 09.09.09 16:37
AWP,
То что это немец - это дело понятное, но вот как построить алгоритм поиска немца в виде программы - мне пока в голову ничего не приходит.
Sharp,
По поводу условий, я пока представляю что-то типа этого.
GreenNum = atLeft(WhiteNum)
End Sub
Function atLeft(FromWhom)
atLeft = FromWhom - 1
End Function
Номер ответа: 6
Автор ответа: AWP
ICQ: 345685652
Вопросов: 96
Ответов: 1212
Web-сайт:
Профиль | | #6
Добавлено: 09.09.09 21:25
Сделать таблицу в которую пихаются значения. Пустая ячейка будет правильной, напротив её будет доп ответ.
Номер ответа: 7
Автор ответа: Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #7
Добавлено: 09.09.09 23:17
Задача Эйнштейна сводится к поиску Э компонентов связности размера Д в Д-дольном графе, если ребро может существовать, не существовать или быть неопределенным. Д - число характеристик человека, Э - число людей. В результате ребер Д*(Д-1)*Э^2. В задаче Эйнштейна 375 ребер (Э=5, Д=6), в задаче ЛКШ 1344 (Э=8, Д=7).
Номер ответа: 8
Автор ответа: AngryBadger
Вопросов: 33
Ответов: 245
Профиль | | #8
Добавлено: 10.09.09 00:26
Я, честно, даже и не подумал через графы что-то делать. А идея крутая, пойду поботаню.
Номер ответа: 9
Автор ответа: Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #9
Добавлено: 10.09.09 18:25
че-то подобное решал на контрольной по прологу. Но наверное попроще было
Номер ответа: 10
Автор ответа: Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #10
Добавлено: 11.09.09 07:10
Основная сложность в записи высказываний 3, 5 и 12
По-моему несложно записать, если пронумеровать дома, тогда просто записывюется, как относятся друг к другу дома разных жителей
типа
Номер Зеленого=Номер Белого -1
и т.п.
Номер ответа: 11
Автор ответа: Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #11
Добавлено: 11.09.09 13:15
Зато вот на графе это отобразить гораздо сложнее, чем стандартное "скрипач пишет на Haskell" (ребро существует) или "баскетболист и кошатник часто вместе играют в шахматы" (ребро не существует).