Шорткат для этой игры заключается в преобразовании ее в другую игру, играть в которую гораздо легче, – в крестики-нолики. Только играть нужно на магическом квадрате.
Магический квадрат замечателен тем, что сумма чисел в любой его строке, любом столбце и любой диагонали равна 15. Если вы играете в крестики-нолики на таком квадрате, вы на самом деле играете в 15. Но держать в голове геометрию игры в крестики-нолики гораздо легче, чем арифметические возможности получения суммы чисел, равной 15.
На следующей странице показана еще одна игра, играть в которую становится легко, если взглянуть на нее с правильной точки зрения. На чертеже показана карта городов, соединенных дорогами. Все дороги представляют собой прямые линии, и на каждой из них может быть 2, 3 или 4 города.
Рис. 3.5. Сеть дорог
Участники игры по очереди «забирают себе» дороги. Выигрывает тот, кто первым скопит три дороги, проходящие через один и тот же город. Чтобы понять, какие стратегии возможны в этой игре, в нее тоже полезно сыграть пробную партию. Но на самом деле это опять замаскированные крестики-нолики. Если обозначить дороги цифрами, как показано на рис. 3.6, окажется, что вы снова играете в крестики-нолики на магическом квадрате.
Рис. 3.6. Сеть дорог, помеченных цифрами магического квадрата
Еще одна классическая игра, стратегия которой становится очевидной, если перевести ее на другой язык, – это игра ним. Есть три кучки бобов. Каждый из участников, дождавшись своего хода, забирает из одной из кучек любое количество бобов. Побеждает тот, кто забирает последний боб. Количество бобов в кучках в начале игры может быть любым.
Предположим, например, что у нас есть три кучки, в которых 4, 5 и 6 бобов. Существует ли стратегия, помогающая победить в этой игре? Хитрость заключается в том, что количество бобов в каждой кучке нужно перевести в двоичную систему счисления. Как вы помните из предыдущей главы, в двоичной системе числа основаны на степенях 2, а не на степенях 10, как в десятичной. Так, 100 в двоичной системе обозначает число 4, потому что в позиции, соответствующей 22, стоит единица. Соответственно, 5 = 22 + 1, то есть 101, а 6 = 22 + 2, то есть 110. Кроме того, есть одно странное правило сложения таких чисел, которое поможет вам понять, выигрышно ли ваше положение в игре. Нужно складывать цифры, стоящие в соответствующих столбцах, но с учетом правила, согласно которому 1 + 1 = 0. Итак,
Выигрышная стратегия требует забрать из одной кучки такое количество бобов, чтобы эта сумма стала равна 000. Оказывается, это всегда возможно. Например, если я заберу 3 боба из кучки, в которой их 5, в ней останутся 2 боба. В двоичной системе 2 – это 010. Сосчитаем сумму еще раз и получим 000:
Самое замечательное в этом то, что любой ход, который сделает после этого ваш противник, изменит сумму так, что в ней появятся какие-нибудь единицы. А если в сумме есть единицы, значит, партия еще не выиграна. Но ваша стратегия позволяет каждый раз возвращать сумму к числу 000. В какой-то момент это приведет к тому, что вы действительно заберете со стола все бобы и победите в этой партии.
Язык двоичных чисел преобразует эту игру в нечто такое, в чем вы всегда можете победить, каким бы ни было количество бобов или кучек. Если только вы выучите двоичные числа. Если в начале игры сумма уже представляет собой последовательность нулей, непременно уступите первый ход противнику. В ином случае делайте первый ход сами, причем так, чтобы он сводил сумму к нулям.
Оказывается, стратегия использования языка двоичных чисел для понимания состояния игры помогает разобраться в массе других сходных игр. Попробуйте сыграть в игру черепахи. Пусть у нас есть ряд черепах, лежащих случайным образом – некоторые лежат на животе, а некоторые перевернуты на спину. (Если у вас дома нет достаточного количества черепах, можно взять монеты. Орлы соответствуют черепахам, лежащим на животе, а решки – черепахам, лежащим на спине.) Каждый из участников игры, когда до него доходит очередь, может перевернуть какую-нибудь черепаху на спину (или монету так, чтобы она лежала не орлом, а решкой вверх). Кроме того, он может, если захочет, перевернуть одну черепаху (или монету), лежащую левее той, которую он перевернул на спину. Вторая черепаха или монета может быть в любом состоянии, на животе или на спине (орлом или решкой). Вот, например, ряд из n = 13 монет:
Р О Р Р О Р Р Р О О Р О Р
Один из возможных ходов в этом положении – перевернуть монету, лежащую в 9-й позиции, чтобы она лежала не орлом, а решкой, и монету, лежащую в 4-й позиции, чтобы она лежала не решкой, а орлом.
Побеждает тот, кто перевернет с живота на спину последнюю черепаху (или из орлов в решки последнюю монету). На первый взгляд кажется, что эта игра не имеет ничего общего с игрой ним, но на самом деле это та же самая игра, только замаскированная.
Число черепах, еще лежащих на животе, соответствует числу кучек, а положение каждой такой черепахи, считая слева, – количеству предметов в соответствующей кучке. В случае показанного на иллюстрации расклада из 13 монет получается 5 кучек, в которых лежат 2, 5, 9, 10 и 12 бобов. Перевернуть черепаху в 9-й позиции на спину (или решкой кверху) и перевернуть черепаху в 4-й позиции на живот – это все равно что забрать 5 бобов из кучки с 9 бобами. Теперь использование языка двоичных чисел, который обеспечивает победу в игре ним, порождает стратегию переворачивания черепах в игре, на первый взгляд не имеющей с той ничего общего.
Хотя вам, возможно, никогда не придется играть в переворачивание черепах, философскую основу победы в этой игре стоит запомнить. Когда вы сталкиваетесь с какой-либо задачей, нельзя ли преобразовать ее в нечто такое, во что вы уже умеете играть? Не существует ли словаря, переводящего эту задачу на язык, делающий решение более очевидным? Когда перед вами возникает стена, в том языке, который вы используете, может не быть способов ее преодолеть. Но, стоит перейти в другой мир, сменив этот язык на другой, там может открыться шорткат, который позволит вам пробраться за стену.