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

Для начала притворимся, что гоблин — это «бездумный магнит», который отслеживает каждое ваше движение и старается держаться к вам как можно ближе. Вот как вы можете попробовать его обхитрить: сделайте небольшой круг в середине озера. Это изрядно досадит гоблину — он попытается обежать вокруг все озеро (а ваша лодка проплывет всего несколько метров). Гоблин не сможет поспеть за вашей лодкой, потому что ему придется описать гораздо больший круг, чем пройдет ваша лодка. Это значит, что, описывая такие круги, вы сможете оказаться от гоблина на расстоянии больше радиуса, если измерить его по прямой, проходящей через центр озера.

Это подсказывает решение. Спросите себя: «Каков радиус самого большого круга с центром в середине озера, по которому я могу двигаться так, чтобы гоблин успевал за мной?»

Это должен быть такой круг, который позволил бы вам преодолевать расстояние, составляющее четверть того, что преодолевает гоблин. Это круг с радиусом r/4.

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


Это значит, что вы сможете оказаться от гоблина на расстоянии 11/4 радиуса. Один из способов добиться этого — начать движение по спирали от центра озера, приближаясь к окружности радиусом r/4, но все-таки оставаясь внутри нее. Пока вы будете внутри «этого зачарованного круга», гоблин не сможет успевать за вами. Вы можете плыть таким образом, пока гоблин не отстанет от вас на полные 180 градусов. Тогда ваша лодка будет на противоположной от гоблина стороне озера (по отношению к центру озера) и на расстоянии по прямой от гоблина в 5/8 диаметра озера (вы на одной прямой, проходящей через центр озера с гоблином, и гоблин на расстоянии радиуса от центра, а вы на расстоянии от центра почти в 1/4 радиуса, или в 1/8 диаметра). Такие геометрические соотношения дадут вам возможность спастись. Вы немедленно перестаете кружиться и по прямой устремляетесь к самой дальней от гоблина точке на берегу озера. Вам нужно покрыть дистанцию чуть больше, чем 3/4 радиуса, а гоблину — расстояние Пиг. То есть ему придется преодолеть расстояние в 4Пи/3 раз большее, чем вам, и, поскольку гоблин двигается в четыре раза быстрее, чем вы, ему для этого потребуется время, которое можно вычислить, умножив необходимое вам время на 7Пи/3. Значение числа Пи больше, чем три (если точно, в 1,047. раза), и это значит, что если вы все выполните по плану, то успеете высадиться на берег и убежать от гоблина до того, как он сумеет вас поймать.

Действительно ли это решение головоломки? Что, если гоблин умен и уже знает о подобном плане? Ему необязательно подобно преданному псу кружиться за вами вокруг озера, особенно если он понимает, что вы затеваете.

Да, но даже если гоблин абсолютно точно знает, что вы планируете сделать, это ему не поможет. Вы можете взять мегафон и прокричать: «Эй, гоблин! Вот что я обязательно сделаю. Я буду крутиться вокруг озера по этому маленькому кругу с радиусом чуть меньше, чем одна четвертая часть радиуса озера. Ты сам можешь все подсчитать! Как только я окажусь в точке окружности на расстоянии в 180 градусов от тебя, я поплыву к берегу, и мы оба знаем, что я успею тебя обогнать. Теперь мы можем решить нашу проблему легким способом, трудным способом или глупым способом. Легкий способ — ты признаешь, что проиграл и спокойно даешь мне возможность доплыть до противоположного берега и убежать от тебя. Трудный способ — ты будешь гоняться за мной. Это потребует от нас обоих больших усилий, но результат все равно окажется точно таким же. Наконец, вот глупый способ. Если ты попытаешься применить „контрстратегию", то есть бежать не на полной скорости, бежать в противоположную сторону, бегать туда-сюда или даже отбежать подальше от озера, все эти трюки только помогут мне быстрее оказаться от тебя на расстоянии в половину окружности (180 градусов), и я все равно убегу от тебя».

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

Всегда ли солнце всходит на востоке?

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

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

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

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

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

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

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

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

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

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

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

Программирование, программы, базы данных / Программирование / Книги по IT