По счастью, Рэнди выработал совершенно умопомрачительную стратегию поедания «Капитанских кранчей», основанную на взаимонейтрализации их самых опасных свойств. Подушечки формой смутно напоминают пиратские сундучки. С хлопьями эта стратегия не сработала бы. С другой стороны, выпускать «Капитанские кранчи» в виде хлопьев — самоубийственная глупость: они бы таяли в молоке, как снежинки в кипящем масле. Нет, проектировщики готовых завтраков из «Дженерал Миллз» стремились найти форму, которая минимизировала бы площадь поверхности. В качестве компромисса между сферой, которую диктует Евклидова геометрия, и формой пиратского сундучка, за которую, вероятно, ратовал отдел эстетики готовых завтраков, они пришли к поперечно-полосатым подушечкам. Для целей Рэнди важно, что отдельные составляющие «Капитанских кранчей», в очень грубом приближении, имеют форму коренных зубов. Стратегия заключается в том, чтобы «Капитанские кранчи» сами себя жевали, размалывая подушечки друг о друга внутри ротовой полости, словно камни в галтовочном барабане. Здесь, как в профессиональных бальных танцах, словесное описание (или видеокассета) может дать лишь общее представление — дальше тело должно учиться само.
К тому времени как съедено удовлетворительное количество «Капитанских кранчей» (примерно треть семисотпятидесятиграммовой коробки), а пиво допито, Рэнди приходит к выводу, что вся история с танцами — просто розыгрыш. Ами и Дуг Шафто встретят его в вестибюле ехидными улыбками и поведут убалтывать в бар.
Рэнди надевает пиджак и галстук. Годятся любые предлоги, чтобы оттянуть время, поэтому он проверяет почту.
Кому: [email protected]
Тема: Трансформация «Понтифик», как обещано Рэнди.
Разумеется, Вы правы — как немцы убедились на горьком опыте, ни одной криптосистеме нельзя доверять, пока она не обнародована, чтобы люди вроде Ваших друзей попытались ее взломать. Буду очень признателен, если Вы сделаете это с «Понтификом».
В «Понтифик» заложены некоторые асимметрии и особые операторы выбора, которые трудно выразить в нескольких элегантных математических строчках. Он почти просится, чтобы его записали псевдокодом. Но зачем сочинять псевдо, если можно написать настоящий? Ниже прилагается программа «Понтифика» на языке Perl. Переменная $D содержит 54-элементную перестановку. Подпрограмма e генерирует следующий элемент ключевого потока, изменяя этим $D.
#!/usr/bin/perl -s
$f=$d?-1:1; $D=pack('C*',33..86); $p=shift;
$p=~y/a-z/A-Z/; $U='$D=~s/(.*)U$/U$1/;
$D=~s/U(.)/$1U/;'; ($V=$U)=~s/U/V/g;
$p=~s/[A-Z]/$k=ord($&)-64, &e/eg; $k=0;
while(<>){y/a-z/A-Z/; y/A-Z//dc; $o.=$_}$o.='X'
while length ($o)%5&&! $d;
$o=~s/./chr(($f*&e+ord($&)-13)%26+65)/eg;
$o=~s/X*$// if $d; $o=~s/.{5}/$& /g;
print"$o\n";
sub v{$v=ord(substr($D, $_[0]))-32;
$v>53?53:$v}
sub w{$D=~s/(.{$_[0]})(.*)(.)/$2$1$3/}
sub e{eval"$U$V$V"; $D=~s/(.*)([UV].*[UV])(.*)/$3$2$1/;
&w(&v(53)); $k? (&w($k)):($c=&v(&v(0)) , $c>52? &e:$c)}
Еще одно письмо — от адвокатши, которая занимается разделом имущества с Чарлин. Рэнди распечатывает его и кладет в карман, чтобы посмаковать на досуге, когда будет стоять в пробке. Спускается вниз, ловит такси до гостиницы «Манила». Если бы он впервые ехал по Маниле, то, наверное, считал бы, что переживает захватывающее приключение; однако это уже миллионная его поездка, и мозг ничего не регистрирует. Например, он видит два столкнувшихся автомобиля прямо под огромным указателем «НЕТ ПОВОРОТА», но не обращает внимания.