четверг, 4 августа 2011 г.

Решение "хитроумной задачи для любителей матана"

Сегодня человек с ником _darkus_ (как оказалось - это тот самый Роман Душкин) разместил в LiveJournal пост, с названием "Хитроумная задача для любителей матана", где он призывал решить её на любимом языке программирования.


Для начала рассмотрим условие задачи:
Встречаются два математика, не видевшиеся много лет. Расспрашивают друг друга о житии-бытии, и в ходе разговора происходит следующий разговор:
М1: Дети-то есть?
М2: Да, трое сыновей.
М1: И сколько же им лет?
М2: Ну ты же математик, попробуй сам рассчитать. Если перемножить их возрасты, то получится 36.
М1: Недостаточно информации.
М2: Сумма их возрастов равна номеру вон того троллейбуса.
М1: Опять недостаточно информации.
М2: Младший — рыжий.
М1: Теперь всё понятно!
Назовите возраст детей.

Итак. Если перемножить возрасты трех детей - информации будет недостаточно.
Но просмотрим различные варианты возрастов:
(36,1,1)
(18,1,2)
(12,1,3)
(9,1,4)
(6,1,6)
(9,2,2)
(6,2,3)
(4,3,3)


Для подбора я писал функцию, но показывать не буду, ибо стыдно. Но свою задачу она выполнила.

"Сумма их возрастов равна номеру вон того троллейбуса". Сгруппируем найденные варианты по равенству суммы возрастов.
[(36,1,1)]
[(18,1,2)]
[(12,1,3)]
[(9,1,4)]
[(6,1,6),(9,2,2)]
[(6,2,3)]
[(4,3,3)]

"Недостаточно информации". Т.е. даже зная номер троллейбуса, математик не мог узнать возраст. Значит списки с одним элементом мы убираем, т.к. если бы сумма из возрастов, записанных в этом списке была равна номеру трамвая - математик бы дал ответ.

Осталось - [(6,1,6),(9,2,2)].

"Младший — рыжий". Значит младший - один! Убираем элемент с младшими близнецами.

Ответ - 6, 6 и 1!

Код решения на Haskell:
solution n = concatMap smallest $ group' $ cMap (\x -> cMap (\y -> cMap (pred x y) y) x) 1
    where cMap f s           = concatMap f [s..n]
          pred x y z         = [(x,y,z) | z * y * x == n]
          group'             = concat . filter (\x -> length x /= 1) . groupBy (\x y -> sum3 x == sum3 y)
          sum3 (x,y,z)       = x + y + z
          smallest l@(x,y,z) = [l | length (head $ group $ sort [x, y, z]) == 1]

Код выше был написан в спешке. Ниже попытка упростить с помощью list-comprehension:
solution n = smallest $ group' [(x,y,z) | x <- [1..n], y <- [x..n], z <- [y..n], x * y * z == n]
    where group'             = concat . filter ((/= 1) . length) . groupBy (\x y -> sum3 x == sum3 y)
          sum3 (x,y,z)       = x + y + z
          smallest l         = [o | o@(x,y,z) <- l, length (head $ group $ sort [x, y, z]) == 1]

Видимо это верный вариант.

19 комментариев:

  1. > "Младший — рыжий". Значит младший - один! Убираем элемент с младшими близнецами.

    Тут меня немного глючит. Возможен ли вариант, когда разница в возрасте составляет 11 месяцев?

    Формально они не близнецы, но возраст будет один и тот же (в некотором интервале).

    ОтветитьУдалить
  2. @67108864,
    Возможно, но это ведь абстрактная *математическая* задача!
    Если учитывать особенности реального мира, то боюсь её решить невозможно. ;)

    ОтветитьУдалить
  3. После первой неправильной попытки (что все возрасты разные), я даже начал решать задачу в вещественной области :)

    ОтветитьУдалить
  4. А я сразу пошел разбирать задачу с условием "произведение дает 36". Это хоть и вывело меня на правильные рассуждения, но я сразу опубликовал слишком "заточенный" под эти рассуждения алгоритм, что очень печально.

    ОтветитьУдалить
  5. http://www.gamedev.ru/code/forum/?id=15588&page=73

    ОтветитьУдалить
  6. @eSyr,
    По ссылке, если я смотрел на нужный пост, разбор конкретной задачи. Тут же я старался писать более общо, дабы был понятен лишь ход мыслей.

    На самом деле задача простая и даже если очень подробно все расписать - получится абзаца три от силы.

    ОтветитьУдалить
  7. @eSyr,
    Порадовала тема "Собеседование: вопросы по плюсам". Однако я не думаю, что на собеседовании дадут использовать компьютер. Без листика эту задачу намного тяжелее решить.

    ОтветитьУдалить
  8. Этот комментарий был удален администратором блога.

    ОтветитьУдалить
  9. Этот комментарий был удален администратором блога.

    ОтветитьУдалить
  10. @Анонимный,
    Вы можете выложить код на какой-нибудь Pastebin сервис? Хотелось бы оставить комментарий про J.

    ОтветитьУдалить
  11. http://pastebin.com/uwS34cBR

    ОтветитьУдалить
  12. VarangaOfficial - варанга в аптеках - самая большая и исчерпывающа подборка фактов. Воспользовавшись нашим порталам, вы получите возможность узнать полную информацию касающуюся представленного средства. Увидеть данные о проведенных клинических тестированиях, прочесть реальные отзывы пациентов и врачей. Изучить инструкцию по использованию, прочесть об особенностях и методах работы комплекса, понять, как работает крем Варанга, где нужно покупать оригинальный сертифицированный препарат и, как не нарваться на подделку. Мы скурпулезно проверяем размещаемые на сайте данные. Предоставляем пользователям нашего ресурса сведения, которые были взяты исключительно из достоверных источников. Если вы обнаружили признаки грибкового поражения стоп или уже довольно продолжительное время, без ощутимых результатов стараетесь избавиться от этого досадного недуга, у нас на сайте вы найдете быстрый и легкий способ устранения проблемы. Приобщайтесь и живите полноценной, здоровой жизнью. Теперь все ответы на самые популярные и волнующие пользователей вопросы, собраны на одном ресурсе.

    ОтветитьУдалить
  13. Эти дикие звери обожжены сексуальным опытом... Конкурс моделей веб-камер: о... Стример против актеров веб-камеры... Как я организован в этой области Развратная модель видеочата знает... Секс видеочат для мастурбации с развратниками и прекрасными дамами россии; только реальное порно, сольная мастурбация и отзывы русских барышень с помощью веб-камер, бонга эро чат Живой сексуальный массаж и сочное видео в формате прямой трансляции! Начните получать удовлетворение в современном видеочате с русскоязычными женщинами и прекрасными дамами со всех стран снг!

    ОтветитьУдалить
  14. Микрокредит дистанционно на личный счет в микрофинансовой организации в москве - это быстрый способ срочно занять необходимую сумму на неотложные нужды в обязательном порядке. Чтобы получить кредит виртуально или быстрый заем на карту, включите компьютер, необходимый в соответствии с пунктами мфк, или на главном ресурсе сделайте заказ интернет-запроса. Паспорт гражданина российской федерации с действительной записью в реестре столицы или другого города. 1. Возраст старше восемнадцатилетнего порога и старше. Действительная дебетовая или кредитная карта в национальной валюте любого российского банка. 2. Смартфон - при sms-подтверждении микрозайма или кредитного договора в сети на банковскую карту. Сравнив существующие микрозаймы и микрокредиты с оплатой на карту дистанционно: от мфо москвы, выберите подходящее предложение. Затем перейдите на сайт mfp и изучите приложение. Через пять - короткий промежуток времени их запрос будет проверен, конечно, одобрен - они отправят промо-код sms для одобрения. После завершения его активации средства будут незамедлительно переведены практически на вашу дебетовую или кредитную карту. Вы можете подать заявку на кредит в сочи москва на пластиковую карту онлайн, некоторые микрокредитные компании предлагают наличные деньги на работе. Чтобы оформить заявку онлайн, нужно заглянуть на сертифицированный портал, отправить анкету и дождаться ответа. После авторизации средства будут зачислены на карту, указанную клиентом. По умолчанию вы можете погасить первый или повторный кредит наличными в столице или виртуальными средствами. Конкретный спектр объектов по-прежнему зависит от компании: например, через учетную запись, выписку на банковский счет, кредит, через платежный терминал. Если человек выбрал эту короткую статью, и поклонник фильмов определенно хочет изучить конкретную информацию о займ без паспорта, Нажмите на весь личный портал.

    ОтветитьУдалить
  15. С этого момента. И мфк, займ без паспорта Подобные банки регулируются национальным банком украины. Что крайне важно повлияло на безвредность и высоту работы, в микрофинансовой организации. Даже в каких случаях выгоднее брать кредит у одного? Где удобнее оформить кредит удаленно, также где кредит наличными? Финансовый портал финансы.Ua для обмена информацией о том, на кого из кредиторов следует обратить внимание. Мфк, или микрофинансовые организации, - это финансовая команда высококвалифицированных специалистов, которая быстро предлагает быстрые кредиты. Фонды, где можно взять кредитные средства в микрофинансовой организации, обычно составляют от ста до 20 тысяч гривен. Важно: микрокредиты выгоднее для одноразового использования. В том случае, когда вы будете постоянно пользоваться заемными средствами, лучше обзавестись кредитной картой. О том, как выбрать между кредитом и банковской картой - подробнее читайте в материале андрея жуматии на finance.Ua. Вы можете взять кредит либо виртуально, либо в студии. Процедура оформления заказа и предоставления средств ориентировочно занимает не более 2 часов, но чаще всего срок кредита и сумма бюджета очень ограничены (большая часть работ не превышает месяца, это не более 20 тыс.Грн). Мфо достаточно лояльны к посетителям всех социальных категорий, я предоставляю займы практически без документов (только удостоверение личности и код). Однако за услугу ifc придется платить очень вкусные проценты: среднегодовые показатели достигают до 700 % в год, ежедневно без бонусов и скидок, коэффициент составляет до двух%. - Вам нужно занять на скромные средства в микрофинансовой организации, они практикуют ежедневные взносы по любому кредиту, потому что микрозайм будет слишком убыточным в долгосрочной перспективе); - финансы нужны как можно скорее (в финансовом учреждении кредит может быть выдан на более длительный срок); - у нас отрицательная история финансовой платежеспособности; - среди ваших друзей нет поручителей; - у лица нет справки о доходах. Начисление кредита в финансовом учреждении - не единственный из наиболее популярных видов кредитования. Кредиты в финансовых учреждениях выдают почем зря на приличные суммы, таковы микрокредиты. Особой популярностью пользуются отсрочка платежа и пластиковые карты. Доверие к банкам лучше, чем к другим вещам, что играет большую роль в процессе поиска кредитора: если для вас что-то идет не слишком хорошо, вы можете перевести общение с фирмой в регулируемую правовую плоскость. В списке основных преимуществ кредитования в финансовых учреждениях они предлагают довольно выгодные ставки по кредитам: таким образом, реально найти предложения со ставкой десять % за сезон. В то же время банки очень придирчивы к сексуальным посетителям. Для того, чтобы оформить мини-кредит, вам нужно будет принести много разных бумаг: ваши паспортные данные: полное имя поручителей, различные справки о доходах, собственности, браке, окончании учебы и т. Д.).

    ОтветитьУдалить
  16. Согласно текстам аборигенов, вплоть до xii-xiii времен прибайкалье населял монголоязычный народ баргуты. Согласно верованиям горожан, идеально выровненные круги растений, которые часто появляются на одном из островов озера байкал, купить тур на байкал Встречаются здесь из-за хороводов ведьм. Здесь очень популярна курортная база, а также есть музей пруда, посвященный жизни человеческого общества озера байкал, жизни животных и растений. Вулканические туфы, бомбы почему-то попадаются по всему побережью байкала, даже на ушканьих островах. Средняя глубина водоемов составляет 744, четыре метра уже являются оптимальными показателями для глубин большого количества водоемов по всему миру, максимальная глубина озера, измеренная советской наукой, давно забивается, также сулимовым в 1983 году, заняла 1640 метров, что сделало байкал самым глубоким водоем на земле. Средняя широта составляет 48 километров. Из иркутска (80% километров от байкала) приятнее всего добраться до старейшего байкальского поселка из первопричин ангары - листвянки, ему в большей степени 300 лет. Тогда природа байкала способна стать зубастой. Ученые подсчитали массу кусков метеорита на дне озера байкал и обнаружили, что существуют необъяснимые линейные расположения деталей. Исследователи до сих пор выяснили, что активный рост насаждений на кольцах не всегда связан с особенностями почвы или поставщиками подземных вод. Татаринов в 2009 году, в конце 2-го сезона увлекательного путешествия по "мирам", озерко, несомненно, считается не слишком опытным. Приложения того же порно онлайн из космоса оказались такими, что кудри появились исключительно в 2003, 2005, 2008 годах в случае двухтысячных годов и также обязательно в новом состоянии. В частности, ходят вредные слухи об этих и других нестандартных 3-метровых гуманоидных существах, подобных тем, которые неоднократно появлялись в морозных пресных водах. Едва ли не самыми значимыми обитателями водоема являются тюлени (байкальский тюлень). Почему тюлень оказался на байкале, не факт, однако, вероятно, он перелез через лену по трубопроводу прудов и бассейнов, связанных с древним байкалом. Байкал прекрасен в любое время, так же как высшее образование и гормональные приложения, но иногда он не гостеприимен. Байкал, но и гормон "младший брат". Восточная сибирь расположена на умеренном резко континентальном климате, кстати, значительное количество воды, которое содержит еще одно озеро байкал, по-своему влияет на воздух береговой линии, ну и благодаря этому возникнут удивительные стандарты местного климата от жаркого до мягкого до холодное время года летом тоже прохладно. Почетное четвертое место займет озеро виктория, которое дает хлеб большой реке нил. Во-вторых, это 7-й сектор в мире после каспийского океана - водохранилища, пруды и бассейны виктории, таганьики, гурона, мичигана, базы или плаца регионов бельгии или нидерландов.

    ОтветитьУдалить
  17. Мировые экспортеры из россии, казахстана, узбекистана, беларуси, ролл апы Официальное одобрение предприятий. С помощью нашего веб-сайта вы сможете сразу написать каждому человеку, когда приобретете печать рекламных щитов. �� На сайте есть любые из наших самых богатых компаний и баннеров, обычно выпуск доступен в российской федерации. Благодаря низкой цене производителя тарифы ниже, чем на международном уровне Доставка баннеров оптом напрямую с завода производителя (россия) Защитные экраны. Печатные вставки. Немедленно. Три.57 - пять долларов/xn----7sbbbhq0bpgaovq.Xn. Печать вкладышей, изготовление вывесок, печать листовок 1.29$/ xn----7sbbbhq0bpgaovq.Xn. Печать мошеннических сайтов 2| два>|2>|два>.29 - 2,57$/xn----7sbbbhq0bpgaovq.Xn. 2| два>|2|два>>|два|2|два>>>.15 - два|2|два>>|два|2>>.86$/xn----7sbbbhq0bpgaovq.Xn. Текстурированные буквы, внешняя рекламная компания, печать спама. 1.15$/ видишь Два.Четырнадцать процентов-четыре.29$/xn----7sbbbhq0bpgaovq.Xn. Печать на окнах, вывески, световые буквы Два|2|два>>|2|два>|2|два>>>.86$/штука Визитные карточки, листовки, базы данных, вывески, вывески, печать квадратов. Уплотнительные щиты. Печатные вставки, пленки Бывшие в употреблении окна, используемые в течение длительного времени, и новейшие различных диаметров, способствующие печати Ноль.57 - ноль.71$/xn----7sbbbhq0bpgaovq.Xn. Печать бесконтактных вставок с монтажом. 1.86 - четыре доллара/xn----7sbbbhq0bpgaovq.Xn. Печать на баннере. Быстро. Эффективный 1.71$/ xn----7sbbbhq0bpgaovq.Xn. Четыре.29 - пять.71$/xn----7sbbbhq0bpgaovq.Xn. Два.36 - два.71$/xn----7sbbbhq0bpgaovq.Xn. Печать на баннере, самоклеящейся пленке, фотобумаге Два.86$/xn----7sbbbhq0bpgaovq.Xn. Платформы, печать на самоклеящейся бумаге Стоимость заявок на тему Вывеска, плакат, буквы. Печать ценников.

    ОтветитьУдалить
  18. На расстоянии до объекта более двадцати километров от кольцевой автодороги средства выдаются параллельно дорожным расходам в виде тридцати рублей/километров. Новое если в объектах есть мебель, оборудование, беспорядок, для стоимости используется множитель.:1, три. 22 измерения в глубине действующих промышленных сооружений обеспечиваются с коэффициентом полтора-два, ноль. 23 когда площадь объекта составляет от тысячи до 5000 киловатт.Метры. Корреляция всегда используется с ценой работы - ноль, девять, с площадью объекта от 5000 киловатт.Метры. Корреляция используется до стоимости услуг - 0,8 процента процента процента. Вынос рамок земляного надела на природу Без выходных стоимость "жесткая" для пунктов, расположенных не всегда дальше двадцати процентов километров от кольцевой автодороги санкт-петербурга. На расстоянии до объекта, превышающем два десятка километров от кольцевой автодороги, также выделяются средства на те же дорожные расходы в виде трети стоимости руб./Км. У вас есть возможность получить консультацию тогда, несмотря на все возникшие у вас вопросы, а кроме того - ознакомиться с примерной ценой изысканий и сроками выполнения всех геодезических работ, позвонив по телефону (812) 640-44-74 или (812) 640-44-76, или отправив запрос в интернете kredit-goda.Ru. Наша организация придерживается лояльного отношения к нашим партнерам и гибкого ценообразования, собственных программ для любого конкретного проекта. В том случае, если вам нужна эта публикация, в случае, если вы хотите перейти к более подробной информации о услуги аэрофотосъемки, Вежливо посмотрите на это сайт.

    ОтветитьУдалить