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

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

Эту головоломку использует компания Fog Creek Software из Нью-Йорка. По этому поводу в одной из интернет-конференций появилось сообщение: «Готов поклясться, что генеральный директор Fog Creek загребает 98 процентов прибылей этой компании. Реальная причина, по которой в ней задают этот вопрос, — желание найти смиренных овечек, готовых с этим мириться, если получат какое-нибудь математическое объяснение».[168]

В одной из школ есть такой ритуал в последний день занятий.

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

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

Во втором цикле вы поставите отметки в клетках с четными номерами 2,4,6,8 и 10. Продолжите это до десятого цикла (если бы вы продолжили это делать до 20, 30, 40 и т. д. — у вас получилась бы полная таблица). После десяти циклов ваша таблица будет выглядеть так:

И следующие циклы никак не повлияют на первые десять шкафчиков — ведь во время одиннадцатого цикла будет меняться положение дверец только шкафчиков номер 11, 22, 33. Таким образом, составленная вами таблица для первых десяти ящиков окончательная. Поскольку в начале шкафчики были закрыты, то все шкафчики, положение дверец которых изменилось нечетное количество раз, останутся открытыми, а если положение менялось четное количество раз, шкафчики будет закрытыми.

Это означает, что после 100 циклов шкафчики 1, 4 и 9 останутся открытыми, а все остальные закрытыми. 1,4 и 9 — это точные квадраты, то есть числа, умноженные сами на себя (1 = 1х1; 4 = 2х2; 9 = 3x3). Это очень привлекательная закономерность.

Вы понимаете, почему открытыми остались только те шкафчики, номера которых — это квадраты какого-то числа? Вы столько раз меняете положение дверцы шкафчика, сколько есть множителей в числе, соответствующем его номеру, а эти множители — парные. Например, двенадцать — это 1х12, или 2x6, или 3x4. Поскольку есть три способа разбиения этого числа на пары сомножителей, общее число сомножителей — шесть. Это значит, что положение дверцы этого шкафчика изменится шесть раз. Единственный способ, которым число может избежать четного количества сомножителей, — это такая ситуация, когда его можно представить как пару из двух идентичных сомножителей. Например, девять можно представить как 1 х 9 и также как 3x3. Это дает только три различных сомножителя (1, 3 и 9). Только те шкафчики, номер которых — это квадрат какого-то числа, будут открываться/закрываться нечетное количество раз, и только их дверцы останутся открытыми.

Такие числа в первой сотне это: 1, 4, 9, 16, 25, 36, 49, 64, 81 и 100. Ответ на задачу: открытыми будут десять шкафчиков.

У вас есть два куска бикфордова шнура…

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

Поскольку она легче, с нее и начнем.

Возможностей немного: если вы подожжете оба шнура, вы не узнаете, сколько прошло времени, пока огонь не добежит до конца, а это будет шестьдесят минут. Никакого прока.

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

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

Основы программирования в Linux
Основы программирования в Linux

В четвертом издании популярного руководства даны основы программирования в операционной системе Linux. Рассмотрены: использование библиотек C/C++ и стан­дартных средств разработки, организация системных вызовов, файловый ввод/вывод, взаимодействие процессов, программирование средствами командной оболочки, создание графических пользовательских интерфейсов с помощью инструментальных средств GTK+ или Qt, применение сокетов и др. Описана компиляция программ, их компоновка c библиотеками и работа с терминальным вводом/выводом. Даны приемы написания приложений в средах GNOME® и KDE®, хранения данных с использованием СУБД MySQL® и отладки программ. Книга хорошо структурирована, что делает обучение легким и быстрым. Для начинающих Linux-программистов

Нейл Мэтью , Ричард Стоунс , Татьяна Коротяева

ОС и Сети / Программирование / Книги по IT
Программист-прагматик. Путь от подмастерья к мастеру
Программист-прагматик. Путь от подмастерья к мастеру

Находясь на переднем крае программирования, книга "Программист-прагматик. Путь от подмастерья к мастеру" абстрагируется от всевозрастающей специализации и технических тонкостей разработки программ на современном уровне, чтобы исследовать суть процесса – требования к работоспособной и поддерживаемой программе, приводящей пользователей в восторг. Книга охватывает различные темы – от личной ответственности и карьерного роста до архитектурных методик, придающих программам гибкость и простоту в адаптации и повторном использовании.Прочитав эту книгу, вы научитесь:Бороться с недостатками программного обеспечения;Избегать ловушек, связанных с дублированием знания;Создавать гибкие, динамичные и адаптируемые программы;Избегать программирования в расчете на совпадение;Защищать вашу программу при помощи контрактов, утверждений и исключений;Собирать реальные требования;Осуществлять безжалостное и эффективное тестирование;Приводить в восторг ваших пользователей;Формировать команды из программистов-прагматиков и с помощью автоматизации делать ваши разработки более точными.

А. Алексашин , Дэвид Томас , Эндрю Хант

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

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

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

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