– На тот случай, если остались какие-нибудь частицы.

Я порылся в своих вещах в поисках чистой одежды.

– Где душ?

– Может быть, тебе помочь? – спросил Рики.

– Нет, не нужно мне помогать. Просто скажи, где здесь этот чертов душ!

– Ты как будто злишься…

– Да пошел ты, Рики!

В душе мне стало легче. Я стоял под струей воды минут двадцать. Горячая вода омывала мое измученное тело. Оказалось, что на мне много синяков – на груди, на бедре, но я совершенно не помнил, откуда они взялись.

Когда я вышел из душа, Рики уже ждал меня снаружи. Он сидел на скамейке и улыбался.

– Джек, я очень озабочен…

– Как Чарли?

– С ним вроде бы все в порядке. Он спит.

– Его комнату ты тоже запер?

– Джек… Я понимаю, что у тебя был очень трудный день, и хочу, чтобы ты знал – мы все тебе крайне признательны за то, что ты сделал. Я имею в виду – компания благодарна тебе…

– К черту компанию.

– Джек, я понимаю, как ты, наверное, сейчас злишься…

– Перестань молоть ерунду, Рики. Я не получил никакой помощи. Ни от тебя, ни от кого другого в этом месте.

– Конечно, тебе могло так показаться…

– Это так и есть, Рики. Нет помощи – значит, нет помощи.

– Джек, Джек… Пожалуйста… Я стараюсь как-то извиниться, хочу сказать, что очень сожалею о произошедшем. Из-за этого я чувствую себя ужасно. Правда, поверь мне. Если бы можно было как-нибудь вернуться назад и все изменить, я бы это сделал.

Я посмотрел на него в упор.

– Рики, я тебе не верю.

Рики победно улыбнулся уголками губ и сказал:

– Надеюсь, в скором времени все изменится.

– Сомневаюсь.

– Ты знаешь, как я всегда ценил нашу дружбу, Джек. Это всегда было для меня самым главным.

Я молча смотрел на него. Рики совершенно меня не слушал. Он просто улыбался с дурацким видом – как будто от его улыбки у всех все сразу будет хорошо. Я начал подозревать, что Рики накачался какими-то наркотиками. Он и в самом деле вел себя очень странно.

– Ну, как бы то ни было… – Рики замолчал на мгновение, потом сменил тему: – Скоро прилетит Джулия – и это очень хорошо. Она будет здесь уже сегодня вечером.

– Хм-м… А почему она сюда прилетит?

– Ну я думаю потому, что беспокоится о сбежавших роях.

– И как же это она о них беспокоится? – спросил я. – Эти рои можно было полностью уничтожить много недель назад, когда у них только начали проявляться признаки эволюционирования. Однако этого не случилось.

– Да. Действительно. Ну, дело в том, что тогда никто на самом деле не понимал…

– А я думаю, что понимали.

– Нет, что ты, – Рики сделал вид, что его незаслуженно обвиняют, и обиженно надул губы. Но я уже устал от этой его игры.

– Рики, – сказал я. – Когда я прилетел сюда, вместе со мной в вертолете сидела толпа пиарщиков. Кто их нанял? Кто уведомил их, что здесь какие-то проблемы с пиаром?

– Я ничего не знаю ни о каких пиарщиках.

– Им запретили выходить из вертолета. Сказали, что это опасно.

Он покачал головой.

– Я понятия не имею… Не знаю, о чем ты говоришь.

Я махнул рукой и вышел из душевой.

– Я не знал! – крикнул Рики мне вслед. – Клянусь, Джек, я ничего об этом не знал!

Через полчаса Рики в знак примирения принес мне недостающий код, о котором я у него спрашивал. Код был короткий – всего один листок бумаги.

– Извини, Джек, – сказал он. – Пришлось повозиться, чтобы его найти. Несколько дней назад Рози закрыла сетевой доступ к целой поддиректории, чтобы ее переработать. Наверное, она просто забыла снова открыть доступ. Поэтому кода и не было в основной директории.

– Хм-м… – я просмотрел запись. – И что она перерабатывала?

Рики пожал плечами.

– Понятия не имею. Один из этих файлов. Я открыл файл с кодом.

/* Модуль комп. стат.*/

Выполнить (движение{0ij (Cx1, Cy1, Сz1)})/*начало*/

{Sij (x1, y1, z)}/*движение*/

{Sik1 (x1, y1, z1)(x2, y2, z2)}/*отслеживание*/

Усилие {z (i)}/*сохранение*/

Реакция усложн./*состояние бегства*/

S1{(dx(i,j,k)}{(место(Cj,Hj)}

S2 {(fx, (a, q)}

Место {z (q)}/*сохранение*/

Намерение усложн./*намерение бегства*/

S1{(dx(i,j,k)}{(место(Cj,Hj)}

S2 {(fx, (a, q)}

Загрузка {z (i)]/*сохранение*/

Выполнить (движение {0ij (Cx1, Cy1, Cz1)})

Выполнить (пре-{0ij (Hx1, Hн1, Hz1)})

Выполнить (пост-{0ij (Hx1, Hy1, Hz1)})

Усилие {Sij (x1, y1, z1)}

{Sik1 (x1, y1, z1) движение(x2, y2, z2)}/*отслеживание*/

(0, 1, 0, 01)

– Рики, – сказал я, – этот код почти не отличается от предыдущих.

– Ну да, наверное. Изменения всегда очень незначительные. Не понимаю, почему ты придаешь этому такое значение, – он пожал плечами. – Я имею в виду вот что – как только мы потеряли контроль над роями, первоначальный код утратил всякий смысл. Мы ведь все равно уже не могли его изменить.

– А как случилось, что вы потеряли контроль? В этом алгоритме нет эволюционного кода.

Рики развел руками и сказал:

– Джек, если бы мы это знали, мы бы знали и все остальное, и никаких неприятностей не было бы.

– Рики, меня пригласили сюда для того, чтобы разобраться с проблемами кода, который написала моя прежняя группа. Мне сказали, что агенты теряют цель…

– Можно сказать, что неподчинение управляющим радиосигналам и есть потеря цели.

– Но код не менялся.

– Ну, знаешь, Джек, сам код никого особо не волнует. Только то, что код собой подразумевает. Обусловленное поведение, которое возникает из этого кода. Нам нужно, чтобы ты помог именно в этом, Джек. Потому что это ведь твой код, верно?

– Да, но это ваши рои.

– Совершенно верно, Джек.

Рики пожал плечами и вышел из комнаты. Я какое-то время смотрел на листок с кодом, а потом задумался – почему Рики распечатал его для меня? Это означало, что он не хотел показывать мне электронную версию документа. Вероятно, Рики пытается скрыть от меня еще какую-то проблему. Возможно, на самом деле код изменили, но Рики мне его не показывает. Или, может быть…

«Ну и черт с ним!» – подумал я. Смял листок с распечаткой и бросил его в мусорную корзину. Решать эту проблему все равно нужно не через компьютерный код. Это было мне совершенно ясно.

Мае сидела в биологической лаборатории и смотрела на монитор, подперев подбородок рукой. Я спросил:

– Ты как, нормально себя чувствуешь?

– Да, – она улыбнулась – А ты?

– Просто устал. И голова опять разболелась.

– У меня тоже. Но у меня – из-за этого фага, – Мае показала на экран. На экране было черно-белое изображение вируса под сканирующим электронным микроскопом. По форме вирус напоминал минометный снаряд – толстая вытянутая головка, прикрепленная к более узкому хвосту.

– Это тот новый мутировавший фаг, о котором ты говорила? – спросил я.

– Да. Я уже отключила от линии один ферментационный чан. Производство работает на шестьдесят процентов от полной мощности. Все равно, вряд ли это имеет какое-то значение.

– А что ты сделала с отключенным чаном?

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

– А почему ты этого не сделала?

– Наверное, я так и сделаю, со временем. Но, поскольку этот вирус новый, лучше сразу попробовать найти эффективный реагент против него. Это может пригодиться впоследствии. Потому что вирус появится снова.

– Ты имеешь в виду, он образуется опять? Заново?

– Да. Может быть, не настолько агрессивный, но, по сути, тот же самый.

Я кивнул. Я знал о такой тенденции, потому что изучал генетические алгоритмы – программы, специально разработанные для того, чтобы воспроизводить процесс эволюции. Большинство людей считают, что эволюция – одноразовый процесс, результат случайных совпадений. Если бы растения не начали производить кислород, животные никогда бы не появились. Если бы астероид не уничтожил динозавров, им на смену не пришли бы млекопитающие. Если бы какая-нибудь рыба не выбралась на сушу, все животные по-прежнему жили бы в воде. Ну и так далее.