KnigaRead.com/
KnigaRead.com » Компьютеры и Интернет » Программирование » Уильям Паундстоун - Как сдвинуть гору Фудзи? Подходы ведущих мировых компаний к поиску талантов

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

На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн Уильям Паундстоун, "Как сдвинуть гору Фудзи? Подходы ведущих мировых компаний к поиску талантов" бесплатно, без регистрации.
Перейти на страницу:

У таких вопросов с подвохом может быть разная форма. Этот похож на детские картинки-загадки, на которых нужно отыскать спрятавшихся мальчиков или кошку. Нет общего правила поиска трюка — подобно кошке на загадочной картинке, трюк может быть спрятан где угодно. То, насколько быстро вы обнаружите трюк, зависит от того, на что вы обратите внимание в первую очередь, во вторую и третью. Ключевой множитель (X–X), естественно, «спрятан» там, где интервьюеры Microsoft ставят многоточие в выражении, которое нужно вычислить по условиям задачи.

Резонно проверить, умеет ли кандидат на работу сначала оценить всю ситуацию в целом, прежде чем тратить время и энергию на какое-то занятие, которое может оказаться бессмысленным. Но для многих людей «ситуация в целом» в первую очередь характеризуется тем, что им нужно пройти трудное интервью, во время которого любые сомнения и колебания могут снизить их шансы на успех. Даже если в нормальной ситуации эти люди склонны сначала проанализировать проблему, а уже потом заниматься вычислениями, и даже если они подозревают, что задача может быть с подвохом, в стрессовой ситуации они начинают заниматься алгебраическими вычислениями, то есть привычно двигаются «слева направо». Они могут идти по этому неверному пути некоторое время и только потом найти простое решение.

Разработайте систему счисления с основанием минус 2.

Эта глупая просьба долго использовалась в интервью, проводившихся в компании Microsoft. На самом деле нет никакого «минус двоичного» счисления. Это все равно, что попросить кого-нибудь написать несколько предложений на языке Клингонов — фантастической инопланетной расы из сериала Star Trek.

Тем не менее можно изобрести логичную и последовательную систему счисления с основанием минус 2. Это как раз то, что от вас ожидается.

Мы пользуемся системой счисления с основанием 10. Это значит, что, когда мы записываем числа, мы представляем их как степени числа 10. Например, 176 — это 1 х 102 + 7 х 10 + 6 х 100. (Существует договоренность, что любое число в степени 0 равно 1.) Еще одна важная особенность десятичной системы счисления — это то, что в ней используется десять цифр (0, 1, 2, 3, 4, 5, 6, 7, 8 и 9).

Компьютеры используют систему счисления с основанием 2, или двоичную. В ней используются только две цифры (0 и 1). В многозначном числе (таком, как 10 010) каждый знак или позиция обозначает последовательные степени числа два — 1, 2, 4, 8, 16, 32. Двоичное число, например 10 010, означает 1 х 2 в четвертой степени + 0 х 23 + 0 х 22 + 1 х 2 + 0 х 2 в нулевой. В обычной, десятичной системе счисления оно равно 18.

В общем, система счисления с любым основанием похожа на систему строительных блоков разных размеров. В десятичной системе размеры этих блоков 1, 10, 100, 1000 и т. д. В двоичной системе размеры блоков — 1, 2, 4, 8, 16 и т. д. Используя комбинации этих «блоков», можно получить любое нужное число.

Итак, какими будут обозначения в системе счисления с основанием минус 2?

Очевидно, что в этой системе счисления числа должны выражаться как суммы степеней числа 2. Последовательность степеней числа —2: -2, 4, -8, 16, -32.

Она отличается тем, что нечетные степени оказываются отрицательными (-2 х —2 = +4, но —2 х —2 х —2 = —8). Таким образом, вам нужно выразить числа как сумму этих положительных и отрицательных степеней.

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

Перед тем, как мы начнем считать, нужно решить еще одну проблему. Какие цифры мы станем использовать в минус двоичной системе? 2? 0 и 1? 0 и -1? Или нечто совершенно другое?

В системах с нормальным основанием количество цифр равно основанию. В десятичной системе десять цифр, в двоичной — только две цифры.

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

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

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

Единицу можно просто записать как 1 (это значит 1 х (-2) в нулевой степени).

С двойкой сложнее. Вторая позиция, считая справа налево, — это —2. Это значит, что 10 (в минус двоичной системе) будет 1 х (-2) в первой + 0 х (-2) в нулевой = —2 + 0, или —2.

Попробуйте 111. Это 1 х (-2) в квадрате + 1 х (-2) в первой + 1 х (-2) в нулевой = 4 + (-2) + 1 = 3. Теперь замените единицу на ноль в первой справа позиции: 110 = 4 + (-2) + 0 = 2. Итак, вот что мы должны написать в минус двоичной системе для того, чтобы получилась двойка, — 110.

И мы только что выяснили, что тройка в минус двоичной системе — 111.

С четверкой все просто. Третья позиция — это 4, как и в обычной двоичной системе.

Четыре записывается как 100.

Если вы поставите единицу в крайней справа позиции, то получится пятерка в минус двоичной системе, или 101.

Для того чтобы получилось шесть, не стоит ставить 1 во второй или четвертой позициях справа, так это дает негативные числа (соответственно —2 и —8). Вам нужно перепрыгнуть на пятую позицию, единица в которой обозначает +16. Таким образом, 10 000 — это 16. Это слишком много, но 11 000 — это 16 + (-8) = 8. Отнимите от этого числа двойку — для этого нужно поставить 1 во второй справа позиции (11 010), и вы запишете шестерку в минус двоичной системе.

Семерка получается, если добавить 1 в крайней правой позиции

(11011).

Мы уже раньше узнали, что 11 000 — это восемь.

Добавьте единицу в первой справа позиции — получите девять (11001).

С десяткой придется повозиться. Начните с восьмерки (11 000). Добавьте к этому числу четыре, поставив 1 в третьей позиции (11 100). Теперь вычтите два, поставив 1 во второй позиции (11 110). Это и есть десять.

Итак, первые десять чисел в позиционной системе счисления с основанием минус 2 — это: 1, 110, 111, 100, 101, 11010, 11011, 11000, 11001 и 11110.

У вас два сосуда и 100 шариков…

На первый взгляд кажется, что изменить вероятность в ту или иную сторону невозможно. Количество красных и синих шариков абсолютно одинаково. Вам нужно все их использовать — нельзя «потерять» несколько синих шариков. Шарики достают абсолютно случайным образом. Разве шансы достать красный шарик не должны быть 50 на 50?

Так и будет, если вы положите 25 шариков каждого цвета в оба сосуда. Более того, вероятность будет 50 на 50, когда в каждом из сосудов по пятьдесят шариков независимо от того, в какой пропорции в каждом из них перемешаны цвета. Положите все красные шарики в сосуд А, а все синие — в сосуд В. И в том случае вероятность вытащить красный шарик в точности 50 %, потому что такова вероятность выбора сосуда А (а любой случайно выбранный из него шарик, как мы знаем, окажется красным).

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

Таким образом, уже только за счет сосуда А вероятность выбора красного шарика составит 50 процентов. Но у вас еще осталось 49 красных шариков, которые вы должны положить в сосуд вместе с 50 синими. В этом случае, если будет выбран сосуд В, шансы выбрать красный шарик из этого сосуда также будут почти 50 на 50 (в действительности эта вероятность равна 49 из 99). Таким образом, вероятность выбора красного шарика в целом (когда шарик случайным образом берется из одного из двух сосудов) будет чуть меньше 75 процентов (50 % + 1/2 от 49/99, а если сосчитать точно — 74,74 %).

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

У вас есть два ведра емкостью 3 литра и 5 литров и неограниченный запас воды. Как можно отмерить точно 4 литра воды?

Давайте подумаем о том, какое количество воды вы можете отмерить. Опустите 3-литровое ведро в колодец с неисчерпаемым запасом воды и вытащите его с водой: вот вам 3 литра воды. Проделайте то же самое с другим ведром — вот и еще 5 литров.

Перейти на страницу:
Прокомментировать
Подтвердите что вы не робот:*