Комментарии 43
И все-таки на Прологе такие задачки быстрее все описываются.
Не то что на brainfuck'е.
Пожалуй. Но я по этому и поместил ее в «ненромальное» программирование. ;)
Капитан Очевидность говорит нам, что пролог — специализированный язык для решения логических задач. Естественно, что описание этой задачи на нём быстрее.
Вообще, изначально хотел обойтись только регекспами. Но количество строк для перебора слишком велико.
Снимаю шляпу!
Разрешите поинтересоваться — на чем рисунки делались? :-)
В openfst входит утилитка fstdraw. Она конвертит автомат в dot-файл формата graphviz. Этот файл затем рендерится в png (или ps, svg...):
fstdraw --acceptor --isymbols=alph.st out out.dot
dot -Tpng out.dot >out.png
я из решения на википедии не понял, почему красный дом не может быть первым, потому что там живет англичанин. Религия не позволяет или почему?
Можно попробовать решить самостоятельно, хотя бы на бумаге.
Два первых условия:
1. Норвежец живёт в первом доме.
2. Англичанин живёт в красном доме.
Красный дом не может быть первым, потому что в красном доме живёт англичанин, а в первом доме живёт норвежец.
Я думаю в условии подразумевается, что двойной национальности нету неукого.
1. Норвежец живёт в первом доме.
2. Англичанин живёт в красном доме.
Красный дом не может быть первым, потому что в красном доме живёт англичанин, а в первом доме живёт норвежец.
Я думаю в условии подразумевается, что двойной национальности нету неукого.
Норвежец живёт в первом доме.
Англичанин живёт в красном доме.
значит красный — не первый
Англичанин живёт в красном доме.
значит красный — не первый
Кстати, загадка носит название «загадки Эйнштейна»,
хотя на самом деле он никакого отношения к ней не имеет.
хотя на самом деле он никакого отношения к ней не имеет.
автор так и написал :)
Вы правы :) Я написал об этом в самом начале.
Хотел узнать для решения каких задач Вы обычно используете пролог?
Только академический интерес или же коммерческие разработки тоже существуют?
Не работал на прологе, поэтому такие вопросы.
Только академический интерес или же коммерческие разработки тоже существуют?
Не работал на прологе, поэтому такие вопросы.
Я не использую пролог :)
Ну, в принципе язык интересный. Однако писать что-то практическое на нем сложно. Разве что использовать как часть какой-то системы принятия/поддержки решений. И даже в этом случае чаще используются другие решатели.
Но просто чтобы поиграть с логикой первого порядка — пролог замечательная вещь.
Ну, в принципе язык интересный. Однако писать что-то практическое на нем сложно. Разве что использовать как часть какой-то системы принятия/поддержки решений. И даже в этом случае чаще используются другие решатели.
Но просто чтобы поиграть с логикой первого порядка — пролог замечательная вещь.
В школе решал эту задачку спокойно и полагал что вхожу в 2% этих самых. Только потом прочитал, что решать надо в уме.
Около 20% могут дать правильный ответ не думая. Если серьезно, то мне кажется, что 2% это сильно преувеличенное значение.
держать в уме 5 таблиц 5x5 действительно не просто.
фактически 16 байт информации, однако требует большой концентрации.
фактически 16 байт информации, однако требует большой концентрации.
Задачку даже с бумажкой и ручкой далеко не все могут решить однозначно — без предположений типа «допустим в этом доме...». А про решение в уме таки и вовсе… шахматисты, наверное, могут на раз-два)
Может, Вы хотели сказать: «Около 20% могут угадать правильный ответ, не думая»?
вы правы. если национальностей 5, то вероятность попадания в правильный ответ 20%. но умное лицо еще не признак ума.
А я эту задачку решал составлением таблиц в экселе, ушло всего каких-то 6 часов.
Школьникам на олимпиадах по математике часто подобные задачки дают. В наших краях — с ограничением по времени в 4 часа на 8 задач. И ничего, многие решают менее чем за полчаса. Без всяких экселей.
Я решал на бумажке «методом судоку». Писал программу ни Си, которая делает тоже самое почти тем же методом. Жду пока кто-нибудь решениие на Brainfuck'е сделает, если это возможно, конечно.
Конечно, на Brainfuck'е это можно решить. Он, как и Си — Тьюринг полный.
А регулярные выражения (или язык, что одно и тоже) — на несколько ступеней ниже. Вот по этому мне и было интересно решить загадку таким методом.
А регулярные выражения (или язык, что одно и тоже) — на несколько ступеней ниже. Вот по этому мне и было интересно решить загадку таким методом.
я 98ой.
объясните, пожалуйст, как получилось пересечение регекспов.
объясните, пожалуйст, как получилось пересечение регекспов.
Я пересекал не регекспы, а соответствующие им автоматы.
Давайте поясню. Вот есть у меня два регекспа
A: 1*
B: *2
С: 1*2
Пересечением A и B будет С. Вобщем, то это не сложно понятно. Их пересечением будет все, что начинается на 1, заканчивается на 2.
Но есть проблема — у меня нет правил как из A и B получить их пересечение C.
Для этого я беру автоматы для A и B (которые полностью эквивалентны регулярным выражениям) и строю их пересечение.
A:
B:
C:
Автомат C — то же самое что и регулярное выражение С.
Давайте поясню. Вот есть у меня два регекспа
A: 1*
B: *2
С: 1*2
Пересечением A и B будет С. Вобщем, то это не сложно понятно. Их пересечением будет все, что начинается на 1, заканчивается на 2.
Но есть проблема — у меня нет правил как из A и B получить их пересечение C.
Для этого я беру автоматы для A и B (которые полностью эквивалентны регулярным выражениям) и строю их пересечение.
A:
B:
C:
Автомат C — то же самое что и регулярное выражение С.
Решите тогда уж этот частный случай: darnley.livejournal.com/25666.html
1. Каждый день в домике, имеющем чётный номер, преподаватель собирает кубик Рубика, попивая молоко.
2. Преподаватель, программирующий на Хаскеле, иногда для смеха объявляет функцию tea — в честь своего любимого напитка.
3. Однажды преподаватель, играющий на скрипке, облил смычок своим любимым персиковым соком.
4. Преподаватель, чьё хобби — чистить трубы, программирует на функциональном языке программирования.
…
1. Каждый день в домике, имеющем чётный номер, преподаватель собирает кубик Рубика, попивая молоко.
2. Преподаватель, программирующий на Хаскеле, иногда для смеха объявляет функцию tea — в честь своего любимого напитка.
3. Однажды преподаватель, играющий на скрипке, облил смычок своим любимым персиковым соком.
4. Преподаватель, чьё хобби — чистить трубы, программирует на функциональном языке программирования.
…
Если добавите кармы до 5 опубликую топик с решением задачи на Haskell.
плюсанул
Спасибо. Кому интересно — вот статья.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Кто разводит рыбок? Или решение загадки Эйнштейна регулярным языком