Читаем Как сдвинуть гору Фудзи? Подходы ведущих мировых компаний к поиску талантов полностью

Поскольку фонарик только один и без него никак не обойтись — единственный способ переправляться через мост такой: двое людей переходят на другую сторону, а потом одному из них нужно вернуться назад с фонариком. Чистый результат такого цикла — один человек переправляется через пропасть.

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

Вам может показаться, что для того, чтобы все четверо переправились, им понадобится четыре перехода туда и обратно. К счастью, это неверно.

Последний переход не требует возврата и позволяет переправиться через пропасть сразу двоим туристам. Таким образом, вам понадобятся два с половиной перехода туда и обратно, и в последний переход переправятся сразу двое.

Наиболее привлекательной идеей, пожалуй, представится такая: поручить Адаму, который переправляется через мост всего за одну минуту, сопровождать своих более медлительных друзей.

Во время первого перехода на другой берег пойдет Адам с самым медлительным из туристов Боно (ему нужно десять минут). Эта пара переправится за десять минут.

Потом Адам переправится обратно с фонариком (на это уйдет всего одна минута).

Теперь Адам пойдет через мост вместе со вторым медлительным спутником Эджем (которому требуется пять минут) и снова вернется назад (еще одна минута).

Наконец, через мост пойдут Адам и Лари (две минуты). Полное время: 10+ 1 + 5 + 1 + 2 = 19 минут. Это на две минуты дольше, чем требуется.

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

Попробуйте старый трюк и перечислите все ваши предположения. Самое основное из них — кто-то должен возвращаться, чтобы вернуть фонарик на тот берег, где его ждут спутники, верно?

Трудно понять, как можно разрешить эту проблему. В условии задачи четко говорится, что никто не может перейти мост без фонарика. (Если вы попробуете как-то «перехитрить» это условие, например перебросить фонарик через пропасть или использовать бечевку для перетаскивания фонарика через пропасть, интервьюер скажет вам, что это недопустимо.)

Мы также предположили, что два человека переправляются через пропасть, а назад возвращается один из них с фонариком. Может быть, стоит попробовать другие варианты?

Нет смысла совершать такие «переходы», которые никому не позволяют переправиться через пропасть. Кроме того, нам сказали, что трех людей (или больше) мост не выдержит. Это оставляет всего две возможности: по мосту идет один человек или два человека. Если вы и подумали о «полном цикле в обратную сторону», то есть это такой вариант, когда вы поручаете кому-то переправить обратно человека, уже перешедшего через пропасть, — в этом нет смысла. Мы вернулись к тому, с чего начинали.

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

Эта идея — ключ к решению. Есть шанс, что, читая эти строки, вы воскликнете: «Я уже думал об этом! Ничего не получается!»

Дело в том, что это одна из тех хороших идей, которую легко испортить. Большинство людей подумает о том, чтобы начать с того, чтобы отправить Боно и Эджа вместе на другую сторону. И к чему это приведет?

У вас на другой стороне окажутся двое невыносимо медлительных людей с единственным фонариком. Это значит, что кому-то из них, вероятно Эджу, придется отправиться обратно (он пойдет медленно), чтобы переправить фонарик. На это уйдет пятнадцать минут, а еще трое людей, включая Эджа, не переправились через мост, и уже одно это не позволит этой троице переправиться за семнадцать минут.

Некоторые люди на этом и остановятся. Легко предположить, что подобное фиаско демонстрирует ложность ключевой идеи. Другие люди задумываются о том, не оставить ли этот переход пять/десять минут на самый конец. Последний переход особый, поскольку после него никому не нужно переправлять обратно фонарик.

Эта идея оказывается ничуть не лучше. Каким образом Эдж и Боно могут оказаться перед мостом с фонариком, когда двое других туристов уже переправились на другую сторону? Только если один из них (скорее всего Эдж?) уже побывал на той стороне и вернулся обратно с фонариком, но в этом случае на дорогу туда и обратно уже было потрачено десять минут, или фонарик вернул назад кто-то из их более проворных товарищей, но тогда он тоже ждет на этой стороне, чтобы переправиться. Это приводит к тем же проблемам, которые мы уже рассматривали раньше.

Перейти на страницу:

Похожие книги

97 этюдов для архитекторов программных систем
97 этюдов для архитекторов программных систем

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

Билл де Ора , Майкл Хайгард , Нил Форд

Программирование, программы, базы данных / Базы данных / Программирование / Книги по IT
Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript
Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript

Данная книга посвящена программированию игр с помощью ActionScript. Здесь вы найдете подробные указания, необходимые для создания самых разных игр – аркад, головоломок, загадок и даже игровых автоматов. В тексте приведены исходные коды программ и детальные, доступно изложенные инструкции. Базовые принципы программирования ActionScript рассматриваются на примере игр, однако вы без труда сможете применить полученные знания и для разработки неигровых проектов, таких как Web-дизайн и реклама. Рекомендации Гэри Розенцвейга помогут вам не только придумывать занимательные игры и размещать их на Web-сайте, но и оптимизировать скорость их работы, а также защищать свои творения от несанкционированного копирования. Представленный в книге код несложно изменить для использования в других программах.Книга предназначена для широкого круга читателей – создателей анимационных роликов, художников-оформителей, программистов и разработчиков Web-сайтов. Издание может также выступать в качестве практического пособия по изучению ActionScript.

Гэри Розенцвейг

Программирование, программы, базы данных / Программирование / Книги по IT
Программирование. Принципы и практика использования C++ Исправленное издание
Программирование. Принципы и практика использования C++ Исправленное издание

Специальное издание самой читаемой и содержащей наиболее достоверные сведения книги по C++. Книга написана Бьярне Страуструпом — автором языка программирования C++ — и является каноническим изложением возможностей этого языка. Помимо подробного описания собственно языка, на страницах книги вы найдете доказавшие свою эффективность подходы к решению разнообразных задач проектирования и программирования. Многочисленные примеры демонстрируют как хороший стиль программирования на С-совместимом ядре C++, так и современный -ориентированный подход к созданию программных продуктов. Третье издание бестселлера было существенно переработано автором. Результатом этой переработки стала большая доступность книги для новичков. В то же время, текст обогатился сведениями и методиками программирования, которые могут оказаться полезными даже для многоопытных специалистов по C++. Не обойдены вниманием и нововведения языка: стандартная библиотека шаблонов (STL), пространства имен (namespaces), механизм идентификации типов во время выполнения (RTTI), явные приведения типов (cast-операторы) и другие. Настоящее специальное издание отличается от третьего добавлением двух новых приложений (посвященных локализации и безопасной обработке исключений средствами стандартной библиотеки), довольно многочисленными уточнениями в остальном тексте, а также исправлением множества опечаток. Книга адресована программистам, использующим в своей повседневной работе C++. Она также будет полезна преподавателям, студентам и всем, кто хочет ознакомиться с описанием языка «из первых рук».

Бьерн Страуструп , Бьёрн Страуструп , Валерий Федорович Альмухаметов , Ирина Сергеевна Козлова

Программирование, программы, базы данных / Базы данных / Программирование / Учебная и научная литература / Образование и наука / Книги по IT