Pull to refresh

Comments 39

«Вероятно многие из вас решали эту задачку на листке бумаги и гордились тем, что входят в несколько процентов населения земли, способных на это.»
2% — это те люди котрые решают задачу без листка бумаги.
Как-то не вызывают особого уважения такие люди. Чистая механика же.
Вот те, кто сходу решают задачи типа продолжения ряда 1, 11, 21, 1211, 111221,? — вызывают гораздо больше уважения :)
Никогда не понимал подобные задачи, ибо через конечное число точек можно провести бесконечное количество последовательностей и все формально будут отвечать заданным условиям.
Требуется найти самую простую подходящую формулу.
А ворос «кошерности» — кто будет определять?
Вы не в состоянии определить, какая функция проще, f(n)=2n для ряда 2, 4, 8 или f(n)=2n^3-38? Но интересные задачи такого рода не такие механические.
Уважаемый borsh.
Я вот люблю суп больше чем борщЪ к примеру.
Хотя у них примерно одинаковые составляющие, но мы же говорим впринципе о еде и том чтобы съесть её.
Во время обеда, вопрос самого лучшего решения для индивидума в следующем:
1) дешевизна продукта в том же объёме;
2) большее получение удовольствия при одинаковых затратах на производство;
3) полезность съеденного и меньшими затратами на уборку.
4) свой вариант??
Суть загадки в ddos твое мозга, потомучто сложно оперировать таким количеством переменных одновременно. На листке получается тупая механика. Попробу решить без листка…
Так я же и говорю: уважаю гораздо больше способных придумать способ решения задачи, чем при известном способе механически провести нужные операции.
Количество одновременно удерживаемых в быстрой памяти объектов крайне сильно влияют на интеллект. При превышении определённого числа становится доступна для понимания рекурсия.
Известен опыт над обезьянами, у которых в стае такой параметр у одних обезьян 2, у других 3 (он не меняется в течение жизни), так вот первые всю жизнь не могли научиться держать камень, удерживать на нем кокос и лупить сверху камнем.
Хорошая задачка. Утверждается, что её дети спокойно решают своим незамутнённым умом.
Наличие компьютера и понимание о чем вообще идет речь — уже делает вас одним из 10% :)
Аттрибуты в виде строк? Автор, у меня почему-то сильное ощущение, что до хаскеля вы писали на похапэ.
>Состоит в: Haskell PHP
Да, детектор не подвёл.
У меня был вариант с типизированными атрибутами, но набор разнотипных атрибутов сложнее хранить в списке :)
Я выбрал вариант, который дает большую простоту кода.
Ждем топика: Captcha — Решите задачу Эйнштейна :)
На этот случай уже есть взломщики капчи :)
А зачем Вы пишите
"nationality" =: "Swede"
вместо простого кортежа?
А так весьма неплохое решение.
И да, было бы неплохо ввести АТД типа:
data PossibleAttrs = Color | Nationanlity | Smokes | Drinks | Pet

и использовать кортежи со строками, отражающими значения. Или даже:
data PossibleAttrs = Color String | Nationanlity String ...

Тогда можно без кортежей.
Так набор атрибутов будет жестко закодирован, а мне хотелось решить задачу в более-менее общем виде.
Ну, поменять варианты в АТД всегда можно быстро, но это дело вкуса, видимо :)
Мне кажется
exists ["smoke" =: "Winfield", "drink" =: "Beer"]
выглядит понятнее чем
exists [("smoke", "Winfield"), ("drink", "Beer")]
Синтаксический сахар :)
Исходник можете где-то выложить?
Посмотрите еще раз внимательнее в текст статьи.
Для красоты в коде была замена некоторых операторов на их юникод-аналоги (->, <-, /=)
Текст в статье я видел. Он не компилировался.
Как раз из-за стрелочек.
А на что заменено /=?
На юникод аналоги (←, →, ≠)
За сколько программа выполняется?
$ time ./einstein

Norwegian lives in Yellow house, owns Cat, drinks Water and smokes Dunhill
Dane lives in Blue house, owns Horse, drinks Tea and smokes Malboro
Englishman lives in Red house, owns Bird, drinks Milk and smokes Pallmall
German lives in Green house, owns Fish, drinks Coffee and smokes Rothmans
Swede lives in White house, owns Dog, drinks Beer and smokes Winfield

real 0m0.273s
user 0m0.232s
sys 0m0.004s

Intel Core2 Duo 2GHz, 2Gb RAM
прикольно — у меня на c# + linq 55 сек — портировал MySQL решение из поста про решение этой задачи на прологе
Мне кажется важную роль играет порядок применения правил, хотя я это и не проверял. А C# во взаимодействии с MySQL или отдельно?
Возможно… Все данные в памяти. Обрабатываются обычным Linq. без MySQL
Ха, думаю MySQL имеет какие-то оптимизации для этого случая.
Исходник можете где-то выложить?
(в смысле если одну из категорий закрепить, а двигать 4 остальные)
А зачем закреплять? Не глядя в ограничения нельзя ничего закрепить.
Ах, в число перечисленных в посте пяти категорий не входит номер дома… Я бы сказал, что категорий шесть. Недоразумение.
Тогда и правда будет 5!^6 / 5! = [столько, сколько и указано в посте].
Only those users with full accounts are able to leave comments. Log in, please.