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

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

Исчерпывает ли это все возможности? Нет. Умная идея — положить два шнура крест-накрест, в форме буквы X. Положите их так, чтобы они пересекались в середине длины каждого из шнуров, прикасаясь друг к другу. Тогда, если вы подожжете один из концов буквы X, огонь доберется до середины, а дальше пойдет сразу в трех направлениях. Все, чего мы добьемся таким способом — второй шнур начнет гореть с середины своей длины (но мы уже знаем, что это нам ничего не дает), и мы не будем знать, сколько времени пройдет (то есть за какое время огонь доберется до пересечения). Что в лоб, что по лбу!

Исчерпаны ли все возможности? Нет: вы можете поджечь бикфордов шнур сразу с обоих концов.

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

Отлично! Это решение для более легкой версии задачи, которое также позволит нам решить и 45-минутную версию. Итак, поджигая один из шнуров с обоих концов, мы можем отмерить тридцать минут. Если бы нам удалось при помощи второго отрезка шнура отмерить еще пятнадцать минут, мы бы решили головоломку.

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

У нас нет отрезка шнура, который сгорает за тридцать минут, но мы можем его получить, если подожжем второй кусок шнура только с одного конца, пока мы отмеряем тридцать минут при помощи первого отрезка.

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

Вы находитесь в лодке точно в центре абсолютно круглого озера.

Именно так, и вы понимаете, в чем проблема: очевидный план — со всей скоростью грести к берегу по прямой к той точке, которая дальше всего от той точки, где гоблин находится сейчас. Это даст вам существенное дистанционное преимущество: вам ведь нужно проплыть только расстояние, равное радиусу (r) круглого озера. А гоблину, который не может плавать, придется бежать по дуге вокруг озера дистанцию, равную половине длине окружности озера. Это расстояние Пш. Гоблину, таким образом, придется преодолеть дистанцию в п раз большую, чем вам.

Число п чуть больше, чем три. Если бы гоблин двигался ровно в три раза быстрее, чем ваша лодка, вы бы его чуть-чуть опередили. Вот почему в головоломке говорится, что гоблин движется в четыре раза быстрее, чем лодка. Не важно, где вы попытаетесь выбраться на берег, — гоблин успеет туда раньше и схватит вас.

Как и во многих других случаях, при решении этой головоломки нужно сначала выяснить ряд важных неопределенностей. Что собой представляет гоблин — то ли он просто бездумный «магнит», скользящий вокруг озера к самой близкой к вам точке, то ли он разумное или даже умное существо? Поскольку вам сказали, что гоблин «безупречно логичен», очевидно, подразумевается последнее. Похоже, что вам придется перехитрить гоблина. Но это непросто. На озере негде спрятаться, а безупречно логичный гоблин может продумать ваши возможные стратегии, и это значит, что врасплох вам его не застать.

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

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

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