суббота, 16 февраля 2013 г.

загадка эйнштейна cgjcj,s htityb

Тот, кто курит Winfield, пьет пиво.

Тот, кто выращивает лошадей, живёт в синем доме.

Норвежец живёт рядом с синим домом.

Швед выращивает собак.

Тот, кто курит Pall Mall, выращивает птиц.

Сосед того, кто курит Marlboro, пьёт воду.

Тот, кто живёт в центре, пьёт молоко.

Немец курит Rothmans.

Тот, кто живёт в жёлтом доме, курит Dunhill.

Тот, кто курит Marlboro, живёт рядом с тем, кто выращивает кошек.

Датчанин пьёт чай

Зелёный дом находится слева от белого, рядом с ним.

Англичанин живёт в красном доме.

Норвежец живёт в первом доме.

Для удобства приведу здесь текст загадки:

Сама идея не моя, услышал ее в одной видеолекции. Однако, там ее решали слишком уж изощренно. Я попытался решить ее более просто и прямолинейно.

Ее можно решить на бумаге или в уме, последовательно исключая неподходящие варианты. Однако, ее также можно решить более технично. Один из способов написать программку на прологе. Но здесь я хочу ее решить используя более простые механизмы регулярные выражения. А именно, перевести условия загадки на язык регекспов и свести задачу к поиску подходящей строки во всем допустимом наборе строк. Кстати, этот набор строк показан на рисунке.

Многие сталкивались с головоломкой про пять разноцветных домов, в каждом из которых живет человек со своими любимыми животным, напитком и сигаретами. Эта загадка приписывается Эйнштейну, хотя прямых подтверждений этому нет. Полный текст этой головоломки .

Кто разводит рыбок? Или решение загадки Эйнштейна регулярным языком

Кто разводит рыбок? Или решение загадки Эйнштейна регулярным языком / Хабрахабр

Комментариев нет:

Отправить комментарий