Эйнштейн написал загадку. Он сказал, что 98% мира не могут решить это.
Я разгадал эту загадку примерно за 25 минут на поезде на работу. Это в основном просто дедукция.
Загадка
Есть 5 домов в 5 разных цветах в ряд.
В каждом доме живет человек с разной национальностью.
5 владельцев пьют определенный тип напитка, курят сигары определенной марки и содержат определенного питомца.
Ни один владелец не имеет одного и того же домашнего питомца, не курит одну и ту же марку сигары и не пьет один и тот же напиток.
Вопрос: кому принадлежит рыба?
Чтобы решить эту загадку, Эйнштейн предлагает 15 подсказок:
- Британец живет в красном доме.
- Швед держит собак в качестве домашних животных.
- Датчанин пьет чай.
- Зеленый дом находится слева от белого дома.
- Владелец зеленого дома пьет кофе.
- Владелец, который курит Pall Mall, выращивает птиц.
- Хозяин желтого дома курит Данхилл.
- Хозяин, живущий в центре дома, пьет молоко.
- Норвежец живет в первом доме.
- Хозяин, который курит смесь, живет рядом с тем, кто держит кошек.
- Владелец, который держит лошадь, живет рядом с тем, кто курит Dunhill.
- Владелец, который курит Bluemasters, пьет пиво.
- Немец курит принц.
- Норвежец живет рядом с синим домом.
- Владелец, который курит смесь, живет рядом с тем, кто пьет воду.
С этими подсказками вы можете прийти к решению.
Ваша задача: составить программу, которая решит эту загадку для вас. Жесткое кодирование решения не допускается (да)
Допускается жестко кодировать подсказки в любом формате.
Пример формата:
//Hints in order
(Nationality:Brit)==(Color:Red)
(Nationality:Swede)==(Pet:Dogs)
(Nationality:Dane)==(Drink: Tea)
(Color:Green)/(Color:White)
(Color:Green)==(Drink:Coffee)
(Smoke:PallMall)==(Pet:Birds)
(Color:Yellow)==(Smoke:Dunhill)
(House:3)==(Drink:Milk)
(Nationality:Norwegian)==(House:1)
(Smoke:Blend)/\(Pet:Cats)
== означает равно
/ означает слева от
\ означает справа от
/ \ означает слева или справа от
Как я уже сказал, он позволяет либо жестко задавать подсказки, либо использовать их в качестве входных данных.
Вывод: Вывод должен быть в следующем формате (с правильными значениями, просто говоря для троллей;))
_____________ _____________ _____________ _____________ _____________
| Number | | Number | | Number | | Number | | Number |
| Nationality | | Nationality | | Nationality | | Nationality | | Nationality |
| Color | | Color | | Color | | Color | | Color |
| Drink | | Drink | | Drink | | Drink | | Drink |
| Smoke | | Smoke | | Smoke | | Smoke | | Smoke |
| Pet | | Pet | | Pet | | Pet | | Pet |
--------------- --------------- --------------- --------------- ---------------
The <Nationality> in the <Color> house owns the fish!
Ящики Ascii art могут быть изменены вами, если они являются коробками, независимо от того, какие символы вы используете.
Любые знания по этой загадке и решению не могут быть использованы в программе. Он должен использовать чистую логику и дедукцию, чтобы разгадать загадку.
Помечено как codegolf, но может быть проблемой кода, не уверен. Любые мысли о критериях выигрыша для вызова кода не стесняйтесь поделиться :)
На данный момент это code-golf, поэтому программа с самым низким числом выигрышей.
Удачи и Счастливого кодирования :)