Добавить в цитаты Настройки чтения

Страница 51 из 62

Вообще-то можно не беспокоиться о бесконечных рядах. Два поезда сближаются с относительной скоростью 35 миль в час (15 + 20 миль в час). Допустим, расстояние между Нью-Йорком и Лос-Анджелесом — 3500 миль. Тогда столкновение поездов произойдет через 3500/35, или 100 часов.

Все это время птица будет в полете, летая между поездами с постоянной скоростью 25 миль в час. Хотя направление полета и меняется, она тем не менее постоянно летит именно с этой скоростью. Таким образом, летая со скоростью 25 миль в час в течение ста часов, птица пролетит 25 х 100 = 2500 миль. Или, если D — это реальное расстояние между Лос-Анджелесом и Нью-Йорком, то столкновение между поездами произойдет через D/35 часов, а птица за это время пролетит 25D / 35, или 5D / 7 миль.

Рассказывают, что кто-то задал один из вариантов этой задачи математику Джону фон Нейману (1903–1957). Тот так быстро дал ответ, что его знакомый сказал: «Ну, ты, наверное, знал, в чем здесь трюк».

«Какой трюк? — спросил Фон Нейман. — Я просто вычислил сумму бесконечного ряда».

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

X — это двадцать четвертая буква английского алфавита, равная 24, возведенным в

степень, значение которой равно значению предыдущей константы W. Поскольку W — это двадцать три в степени U, которая 22 в степени Т, которое 21 в степени. X

Все это значит, что X — это 24, возведенные в степень 23 в степени 22 в степени 21. и так далее, до 3 в степени 2 в степени 1. То есть это 23-ступенчатые экспоненты.

Х — это очень большое число.

Поисковый интернет-портал Google (произносится Гугл) получил свое название от числа, название которого, правда, пишется чуть иначе — googol (гугол), значение которого можно записать как единицу со ста нулями. Есть еще большее число, названное googolplex (гуголплекс) — это единица, за которой следует гугол нулей. Ни гугол, ни гуголплекс не имеют никакого практического применения за исключением иллюстрации того факта, что существуют абсурдные огромные числа. В наблюдаемой вселенной нет никаких объектов, количество которых составляло бы гугол. А гуголплекс — это такое огромное число, что его даже не записать. Поскольку количество нулей в этом числе — гугол, а даже количество атомов или кварков во вселенной меньше, вам никогда не написать это число на бумаге, сколько бы у вас ни было бумаги и каким бы мелким почерком вы ни писали.

Но даже гуголплекс — это маленькое число, если сравнить его с числом X из головоломки Microsoft. Корпорация Intel еще не изготовила достаточно микропроцессоров, чтобы рассчитать значение X. Даже если закон Мура будет выполняться до конца времен и каждые пять лет будут появляться новые Супер-Пентиумы и вы заполните всю вселенную этими процессорами, вы все равно не сможете рассчитать невообразимо огромное значение X.

Тот факт, что интервьюер просит вас рассчитать точное количественное значение выражения, в котором таких X множество, должно подсказать вам, что здесь есть какой-то трюк.

Правильный ответ — ноль. Среди 26 сомножителей должен быть один со значением (X–X) — а это, конечно, ноль. Неважно, чему равны все остальные сомножители — что бы вы ни умножили на ноль, результатом все равно будет ноль.

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

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





Эта глупая просьба долго использовалась в интервью, проводившихся в компании 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? Или нечто совершенно другое?

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

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

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