0 и 1, которые декодируются вашим MP3-проигрывателем. Внутри этих чисел содержатся указания, предписывающие, как вибрировать вашим колонкам или наушникам, чтобы вы могли услышать сладкий голос Криса Мартина. Наверное, то обстоятельство, что в наш цифровой век музыка представляет поток 0 и 1, и вдохновило на создание обложки третьего альбома Coldplay.
Но ключом к пониманию секретного сообщения, погруженного в рисунок на обложке, служит исходный код Бодо. Узор может быть разделен на четыре столбца с пятью блоками в каждом столбце. Окрашенные блоки нужно интерпретировать как 1, а пропуски – как 0. Поскольку порою трудно сказать, какой край ленты должен быть сверху, машина перфорирует тонкую линию, отделяющую два верхних блока от трех нижних. Вот почему на рисунке обложки видна линия, разделяющая серые и цветные блоки.
Рис. 4.15. На обложке третьего альбома группы Coldplay используется код Бодо
Блоки первого столбца обложки чередуются как цветной-пустой-цветной-цветной-цветной, что переводится в 10111, а это код Бодо для Х. Последний столбец становится кодом Бодо для Y. Два средних столбца чуть интереснее. Пять нулей и единиц дают возможность закодировать 32 символа, но очень часто требуется большее, поскольку имеются числа, знаки пунктуации и другие символы, которые также хотелось бы передать. Чтобы удовлетворить этим требованиям, Бодо нашел хитрый способ расширить допустимый диапазон. Вспомните, как на клавиатуре нажимается Shift для доступа ко всему набору символов при использовании тех же клавиш, и Бодо использовал одну из цепочек из 5 нулей и единиц в качестве эквивалента Shift. Итак, если вам встретится 11011, то следующая цепочка будет относиться к расширенному набору символов.
Этот веб-сайт позволит вам создать собственные обложки альбомов в стиле Coldplay: http://bit.ly/Coldcod.
Второй столбец на обложке как раз и представляет клавишу Shift для кода Бодо. Чтобы декодировать последовательность пустой-пустой-пустой-цветной-цветной третьего столбца, нужно обратиться к расширенному набору символов, показанному на схеме ниже. И уверен, что большинство людей ожидает увидеть символ &. Но 00011 обозначает не &, а цифру 9. Итак, настоящим названием третьего альбома Coldplay, изображенным с помощью кода Бодо, будет X9Y, а не X&Y. Подшутила ли группа Coldplay над нами? Возможно, нет. Ведь код Бодо для 9 и & различается лишь на один блок, и, скорее всего, на рисунке допущена ошибка, которая наглядно иллюстрирует проблему с многими из этих кодов: трудно сказать, совершен ли промах. Именно в детектировании подобных ошибок математика кодов в полной мере проявляет себя.
Рис. 4.16. Код Бодо
Какое из этих чисел будет кодом книги: 0521447712 или 0521095788?
Я уверен, что вы видели ISBN, Международный стандартный книжный номер (International Standard Book Number), на обложке каждой книги. Его 10 цифр однозначно идентифицируют книгу, а также сообщают о стране происхождения и об издательстве. Но это отнюдь не все, что делает код. В ISBN также встроено немного магии.
Скажем, я хочу заказать книгу и знаю ее ISBN. Я печатаю номер, но из-за спешки допускаю ошибку. Вы могли бы подумать, что у меня окажется не та книга, но этого не произойдет, потому что у ISBN есть поразительное свойство: эти номера могут детектировать ошибки внутри самих себя. Давайте я покажу, как это получается.
Вот подлинные ISBN некоторых моих любимых книг:
Таблица 4.05
Под каждой цифрой я привел результат умножения на ее порядковый номер в коде. Так, в первом ISBN 0 умножается на 1, 5 на 2, 2 на 3 и т. д. Затем я сложил все новые числа и написал полученную сумму в конце строки. Вы заметили особенность чисел, приготовленных по этому рецепту из ISBN? А вот результат вычислений с использованием некоторых других настоящих ISBN: 264, 99, 253.
Вы подметили закономерность? Расчет всегда приводит к числу, которое делится на 11. Это не чудесное совпадение, а следствие искусного математического замысла. Информация о книге содержится только в первых девяти цифрах. А десятая цифра добавляется в ISBN таким образом, чтобы результат вычислений по данному рецепту был кратен 11. Вы могли заметить, что у некоторых книг на последней позиции находится Х вместо арабской цифры. Например, у другой моей любимой книги следующий ISBN: 080501246X. X просто обозначает 10 (вспомните римские числа). В этом случае потребовалось дописать 10 в конец ISBN, чтобы результат вычисления делился на 11.
Ошибись я в одной из цифр при вводе ISBN, вычисление привело бы к результату, который не делится на 11. В таком случае компьютер будет знать, что я допустил ошибку, и мне будет предложено ввести ISBN еще раз. Даже если я переставлю местами две цифры – а люди часто допускают подобную ошибку, когда набирают номер, – то компьютер не даст команду послать мне неверную книгу, а попросит меня ввести правильный ISBN. Придумано довольно умно. Теперь вы можете проверить номера в заголовке этого раздела, чтобы определить, какой из них является настоящим ISBN, а какой – самозванцем.
Поскольку книги продолжают издаваться в больших количествах, номера ISBN начали заканчиваться. Поэтому было решено, что с 1 января 2007 г. в ISBN будет 13 цифр. 12 из них по-прежнему идентифицируют книгу, издателя и страну происхождения, а тринадцатая будет отслеживать, не вкрались ли ошибки. Но ключевым для номера ISBN теперь является делимость на 10, а не на 11. Найдите номер ISBN этой книги. В нем 13 цифр. Сложите 2, 4, 6, 8, 10 и 12-ю цифру, а сумму умножьте на 3. Теперь прибавьте к промежуточному результату все остальные цифры. Итоговый результат будет делиться на 10. Если же вы сделали ошибку при записи номера ISBN, то у вас, скорее всего, получится число, которое не делится на 10.
Как использовать коды для чтения мыслей
Для того чтобы показать этот фокус, вам понадобится 36 монет. Дайте вашему ничего не подозревающему другу 25 монет и попросите его расположить их на сетке 5 × 5 со случайным распределением орлов и решек. Он, к примеру, мог бы расположить монеты так:
Таблица 4.06
Потом вы говорите: «Через минуту я попрошу тебя перевернуть одну из монет, после чего я прочитаю твои мысли и скажу, какую именно ты перевернул. Ты можешь решить, что я могу запомнить порядок 25 монет, поэтому давай сделаем мою задачу еще более сложной и увеличим квадрат».
Затем вы добавляете монеты, создав дополнительный ряд и столбец, так что получается сетка 6 × 6. На первый взгляд вы распределяете орлы и решки случайно… хотя на самом деле это вовсе не так. Вы считаете, сколько решек имеется в каждом ряду и каждом столбце начиная с первого столбца. Если в первом столбце нечетное число решек, то положите дополнительную монету в первом столбце решкой вверх. Если же число решек четно (0 считается четным числом), то положите дополнительную монету в конец первого столбца вверх орлом.
Сделайте то же с каждым столбцом и затем добавьте монету в конец каждого ряда, используя прежний критерий. Теперь в правом нижнем углу появится ячейка, которую необходимо заполнить для завершения квадрата. Положите монету вверх орлом или решкой в зависимости от того, четное или нечетное число решек в столбце над этим углом. Интересно, что это также зафиксирует четность или нечетность числа решек в дополнительном нижнем ряду. Вы можете доказать, что это всегда так? Прием состоит в том, чтобы заметить, что это число говорит вам, четно или нечетно количество решек во всей сетке 5 × 5.
Как бы то ни было, сетка теперь будет выглядеть следующим образом:
Таблица 4.07
И вы готовы показать фокус. Повернитесь спиной и попросите вашего друга перевернуть какую-либо монету. Когда это сделано, снова повернитесь лицом к монетам. Сосредоточьтесь на сетке и объявите, что вы намерены прочитать мысли друга и идентифицировать перевернутую монету.
Разумеется, вы вовсе не читаете мысли вашего друга. Вы возвращаетесь к исходному квадрату 5 × 5 и считаете орлы и решки в каждом ряду и столбце. Вы проверяете четность числа решек и сопоставляете ее с добавленным вами орлом или решкой, указывающими на четность в каждом столбце или ряду. Если ваш друг перевернул одну из монет на сетке 5 × 5, то будет один ряд и один столбец, где показания добавленных вами монет будут неправильными. Посмотрите на место пересечения этих ряда и столбца – лежащая там монета и была перевернута.
Теперь вы, скорее всего, сумеете определить, какая монета была перевернута на данной сетке:
Таблица 4.08
В первом столбце сетки 5 × 5 четное число решек, но добавленная вами монета лежит решкой вверх, указывая, что изначально там было нечетное число решек. Итак, монета, перевернутая вашим другом, находится в первом столбце. Перейдем теперь к рядам. Во втором ряду наблюдается рассогласование: там нечетное число решек, но ваша «контрольная цифра» говорит, что должно быть четное число. Теперь вы можете прочесть мысли вашего друга и возвестить: «Ты перевернул монету в первом столбце, во втором ряду». Вас ждет взрыв аплодисментов впечатленной публики.
Но что будет, если ваш друг перевернул одну из добавленных вами монет? Никаких проблем. Теперь нижний правый угол будет неправильно указывать на четность последнего ряда или последнего столбца. Если он не соответствует последнему ряду, то вы будете знать, что изменение произошло в последнем ряду. Поэтому вы можете проверить поочередно столбец за столбцом, чтобы понять, где произошло рассогласование. Если вы обнаружите, что несоответствие имеется в шестом столбце, значит, ваш друг перевернул монету в нижнем правом углу.
Вот опять та же сетка, где была перевернута одна из добавленных вами монет. Вы можете идентифицировать ее?
Таблица 4.09
Она находится в верхнем правом углу. Орел в нижнем правом углу говорит вам, что выше его в нижнем столбце должно быть четное число решек, но оно оказалось нечетным. Теперь выполните проверку по рядам. В первом ряду имеется рассогласование, поскольку орел в конце ряда говорит, что должно быть четное число решек слева от него. Но их нечетное число, из чего следует, что была перевернута монета в верхнем правом углу.