Счастливчик

1

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

– “Добро пожаловать в программу ‘Счастливчик’. Вы должны решить 4 задачи за полтора часа. За каждое неправильное решение один из кандидатов будет убит. Если все задачи будут решены, оставшиеся в живых получат предложение на работу в компании. Если же задачи не будут решены, через полтора часа комната заполнится ядовитым газом. Желаю успехов! Лукас”. Лукас? Это СЕО компании? – спросила молодая девушка, почти девочка, нарядившаяся для интервью в платье и туфли на каблуках. Она поправила очки и оторвала глаза от монитора компьютера, с которого только что прочла вслух приветственный текст.
– Это шутка? Про смерть участников? – подала голос другая дама.
– Похоже на квест “Выбраться из комнаты”, – сказал высокий парень спортивного телосложения.
– А в туалет нам дадут сходить? – недоумевал еще один кандидат. Он казался старше остальных и выглядел нелепо в широкой синей куртке.
– Что вы медлите? – закричал лохматый юноша в футболке с хакерской конференции. – Все предельно ясно. Надо решать задачи. Я участвовал в олимпиадах. Дайте мне 15 минут, и я все решу.

Юноша взгромоздился на стул, кликнул на кнопку “Продолжить” и принялся стучать по клавишам.
– Погоди, – взял его за плечо высокий парень. – Ты пишешь код, не прочитав условие задачи?
– Не мешайте мне, я сейчас все решу, – отдернул его руку юноша. – Я параллельно читаю условие и программирую. Я в олимпиадах участвовал.
– А я служил в Ираке. Ничего не запускай без моей команды. Мне с самого начала не нравится, как проходит это интервью. Вначале у нас отнимают телефоны, ведут в эту комнату, не давая никаких инструкций и запрещая общаться.
– “Свиньи и веганы”, – прочитала нарядная девочка.
– Что?
– Название первой задачи, – пояснила она. – “Веганы попали на необитаемый остров, где живут свиньи. Каждый веган съедает в день по свинье…”
– Фу, что за мерзость, – возмутилась дама. Она тоже подошла к монитору и щурила глаза, стараясь прочесть условие задачи. – Я еврейка, я отказываюсь решать задачу о свиньях.
– А я веган, – кашлянул дядя в синей куртке.
– “После чего каждые десять свиней съедают одного вегана. Вывести день, в который будет съедена последняя свинья”, – дочитала условие девочка.
– Я пришла на интервью, а не чтобы меня оскорбляли, – продолжала ворчать дама. – Ужасно у них все организовано. Я думала, что буду проходить интервью одна. Какое уж тут социальное дистанцирование. Даже присесть негде, кроме этого одного стула, который он занял.
– Это тоже своего рода испытание. Попытка сбить с толку, – болтал юноша, шелестя пальцами по клавишам. – Я участвовал в олимпиадах. Надо относиться к задачам агностически: свиньи, трубы, камни – какая разница. Готово.

Он навел курсор на кнопку “Отправить”, но резкий толчок свалил его со стула.
– Ты нас всех убить хочешь? – заорал парень-военный. – Кто будет точки с запятой ставить?!
– Идиот, – провизжал волосатый юноша, поднимаясь на ноги и потирая ушибленный бок. – Это питон, в нем нет точек с запятой.
– Прекратите драку, – строго сказала блондинка, которая все это время держалась в стороне и не лезла в кучу малу перед компьютером. – Все это интервью срежиссировано, чтобы нас напугать и перессорить. Чтобы мы съели друг дружку. Как свиньи и веганы в задаче.
– Проверка “мягких навыков”, – поддакнула ей девочка. – Мы должны работать в команде.
– Я один могу все решить, – презрительно бросил юноша. – Обидно только, что я все решу, а вас, прохлаждающихся идиотов, тоже возьмут. И мне с вами потом работать.
– Стоп, – продолжила всех строить блондинка. Она скользнула взглядом по бейджику. – Бернард, ты быстро объяснишь нам свое решение. Если все с ним согласны, то запускаем. Там есть тесты?
– Зачем тесты? Тут очевидный брут-форс. Я мог бы вообще в две строчки все решить, – юноша водрузился назад на стул и начал водить пальцем по строчкам. Ему было в тягость объяснять такую элементарщину. – В цикле, пока swine больше нуля, вычитаем из swine homo, потом из homo вычитаем swine, целочисленно разделенное на 10. И добавляем счетчик, который возвращаем.
– А можно заменить эти переменные на a и b? – перебила его серьезная дама. – Мне неприятно слышать swine и homo.
– Идиоты, – шлепнул себя по лбу юноша. – С вами каши не сваришь. Какая разница, как называются переменные? Как их автор задачи назвал, так я и закодил. В общем, если возражений нет, то я запускаю.

И прежде чем идиоты снова могли его остановить, гениальный олимпиадник кликнул на кнопку “Отправить”. Свет в комнате сменился с белого на красный, и механический женский голос произнес: “Превышение лимита по времени”. Две металлические плиты в полу раздвинулись, и стул вместе с сидящим на нем юношей полетел в бездну. Девочка ойкнула и едва успела отскочить, устояв на ногах только благодаря поддержке со стороны военного. Вся сцена заняла пару секунд. Освещение вернулось в норму, дырка в полу закрылась, и в комнате осталось уже только пятеро кандидатов.

– Что это было? – испуганно воскликнул дядя в куртке. – Он хотя бы на что-нибудь мягкое упал?
– Да, на свою голову, – не удержался военный. – Нас же предупреждали, что за каждое неправильное решение будет заплачено жизнью.
– Я так не играю, – возмущенная дама направилась к двери. Но дверь была плотно закрыта. Ни замка, ни ручки. Блестящий лист металла со слегка закругленными углами. Даме оставалось только обреченно стукнуть по ней кулаком.
– Превышение лимита. Ну, конечно же, – блондинка склонилась над компьютером, перед которым уже не было стула. – Если веганов ноль, то некому есть свиней, и свиньи никогда не закончатся. Ни в какой день.
– Или если веган один против сотни свиней, – хмыкнул военный.
– Нам надо добавить одну строчку – проверку, что если homo стало меньше или равно нуля, то вернуть…
– Условие надо было внимательнее читать. И этот хакер называл меня идиотом.
– Что надо вернуть? – влезла в разговор девочка. – Если свиньи будут всегда, то бесконечность?
– Я не понимаю, – задумалась блондинка. – В питоне есть infinity? Или math.inf? Кто знает?
– Ой, я программирование плохо еще понимаю, – замахал руками дядя. – For и if еще помню, а вот с типами переменных у меня всегда был швах.
– Там нет возможности запустить тесты? Или посмотреть в интернете? – предположила девочка.
– Нет, ничего не вижу, – блондинка взяла мышь в свои руки. – Условие, код, кнопка “Отправить”. Время – остается час двадцать минут. Наверно, можно свернуть это окно, но я боюсь экспериментировать с комбинациями клавиш: еще взорву всех.

Начинающие программисты тревожно переглянулись. Еще ни одно интервью не вызывало у них такой страх перед ошибкой.
– Правильно, – подбодрил ее военный. – Не надо рисковать. Мы уже видели, чем это закончится. Они неспроста забрали у нас телефоны. Рассчитывать мы должны только на себя. Что еще может быть, кроме бесконечности? Null?
– False?
– Error?
– 0? – даже дядя в куртке включился в решение. И только дама молчаливо подпирала спиной дверь. Она скрестила на груди руки и приняла надменный вид “меня это не касается”.
– Ноль не может быть, – рассуждала блондинка. – Ноль – если все свиньи изначально съедены, а у нас наоборот – целый свинарник. И не False: должно быть число. Но какое?
– Давайте голосовать, – предложила дама. – Я за ноль.
Она подняла руку. Остальные соискатели обернулись.
– И я за ноль, – согласился дядя.
– Это не тот вопрос, который надо решать голосованием, – возразила девочка.
– У нас в стране пока демократия, – невозмутимо сказала дама. – Любой вопрос можно решить голосованием.
– Я за бесконечность, – поднял руку военный.
– За плюс бесконечность, – проголосовала девочка.

Все взоры обратились к блондинке за компьютером.
– Вы ждете, что я выберу? Кажется, в питоне есть math.inf. Надо только импортировать библиотеку math.
– Прекрасно, – дама опустила руку. – Вы в большинстве, вы и запускайте эту чертову программу. Я пас. Я тут в сторонке постою.
– Так, return math.inf. Мы все случаи закрыли? – обратилась к собратьям по испытанию блондинка.
Военный развел руками. Девочка вперилась в экран, перебирая в голове варианты. Дядя переминался с ноги на ногу.
– У нас мало времени, – напомнила им дама.
– Разойдитесь. Я это решение написала, я его и запущу, – блондинка навела курсор на кнопку “Отправить”, но вместо того, чтобы кликать, подняла мышь и вместе с ней сделала несколько шагов назад от компьютера.
– Ты уверена? – послышался вопрос. Девушка с мышкой едва заметно кивнула.
– Вы думаете, что тот, кто запускает, тот и погибает? – забурчал дядя. – Или тот, кто написал решение? Как они это определяют? У них есть камера, которая за нами следит? Она от компьютера отошла, потому что боится, что яма снова откроется?
– Помолчи, – дернул его за рукав куртки военный.

Все замерли. Часы на компьютере продолжали обратный отчет: 1:17. И еще три задачи. Четыре. Первая еще не решена. Блондинка оглянулась по сторонам, пробуя прикинуть, откуда может угрожать опасность. Ей представилось, как комната заполняется красным светом, огромная секира выезжает из стены и разрубает ее напополам. Надо было решаться. Большая навороченная мышь оттягивала руку. Не мышка, а целый геймерский крысокабан с тремя колесиками. Она попыталась ухватиться за нее поудобнее вспотевшей ладонью, как случайно нажалась одна из боковых кнопок. Блондинка невольно зажмурилась.

10

– Осторожно. Ты переключила на следующую задачу, – крикнул военный, который оставался ближе всех к компьютеру.
– Мышка неудобная, – пожаловалась блондинка. – Сейчас переключу назад.
– Погодите! – остановила ее девочка. – В этой задаче есть то, что нам нужно. “Кто из нас заразный?”
– Не я! – первым ответил ей дядя. – Я тест на прошлой неделе делал.
– Я не в том смысле, – обернулась на него девочка. – Это название второй задачи – “Кто из нас заразный?”. Среди нас тут в комнате, надеюсь, все здоровы.
– Я тоже надеюсь, – влезла дама, которая на всякий случай сделала еще пару шагов в сторону от остальных. – И давайте решать задачи по порядку. Мы первую еще не решили, зачем ты лезешь решать вторую?
– Не решать, – девочку начинала злить эта дама. – Там в условии…
– Я вижу, – отозвалась блондинка. – “Если ни на каком шагу все протестующие без масок не смогут заразиться вирусом, то вернуть –1”.
– Минус один, точно, – вступил в беседу военный. – Это именно то, что недавно произошло с волосатиком на стуле. Еще одна подсказка.
– Я ничего не понимаю, – насупилась дама. – Вы какую задачу обсуждаете?
– Во второй задаче более подробное условие. Там тоже речь идет о подсчете шагов, но есть инструкция, что если всех заразить не удастся, то вернуть “минус один”. Может “–1” быть ответом и в первой задаче, когда свиньи съели всех веганов? Вместо Бесконечности?
– Бред какой-то. Как день может быть минус один? За один день до? Вчера, то есть? – недоумевала дама.
– Не слушай эту дуру, Дана, – обратилась к блондинке девочка. – Такое очень часто в подобных задачах бывает. Когда символ в строке не находится, тоже “–1” возвращается. Как я сама не догадалась.

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

Цвет комнаты снова на мгновение поменялся. Но на этот раз на зеленый. “Успех”, – произнес тот же роботизированный голос.
– Вау, одна есть, – Дана и Янг от радости хлопнули друг друга в ладоши.
– Но это очень простая задача, и мы провозились с ней почти двадцать минут, – напомнил им Иван.
– Да, нельзя расслабляться, – согласилась Дана. – Вторая задача чем-то похожа, но выглядит намного сложней.
– “Кто из нас заразный?” – снова прочитала Янг. – “Толпа протестующих задана двумерным массивом. ‘1’ обозначает зараженных участников, которые на каждом шагу заражают соседей слева, сверху, справа и снизу, если те не носят маску. Они обозначены ’0’. Протестующие в масках обозначены буквой ‘М’ и полностью иммунны к вирусу. Рассчитайте, на каком шагу все протестующие без масок перезаражают друг друга. Если ни на каком шагу все протестующие без масок не смогут заразиться вирусом, то вернуть –1.” Я решала похожую задачу на джаве два дня назад во время подготовки к интервью, но там было без масок и протестов.
– Кто только придумывает такие возмутительные условия? – закатила глаза дама. – Технологическим компаниям до расового и гендерного равенства далеко как до Аляски.
– Тут же, наоборот, защищаются ваши любимые маски, – решил поспорить с ней Иван. – И если вы против капиталистов, то зачем подаете на позицию программиста в эту компанию?
– Чтобы развалить ее изнутри, – меланхолично отвечала дама. – Чем больше акций в руках рабочих, тем меньше у капиталистов. Каждый украденный у буржуев доллар – это наш социалистический долг. Слышал такую поговорку?
– Хватит, Иван, – блондинка Дана пыталась взять ситуацию под свой контроль. – Янг, ты знаешь, как решать эту задачу?
– Да, я сейчас еще раз условие перечитала. Я точно такую же решала, – подтвердила Янг. – Там проще всего использовать рекурсию.
– Можно тебя попросить писать на питоне? Мне так будет легче проверить правильность решения, чем на джаве, – попросила ее Дана.
– Мне все равно. Могу и на питоне, – девочка склонилась над клавиатурой и начала писать код.

– Рекурсия. Я и слова-то такого не знаю, – прокомментировал дядя в куртке.
– А зачем тогда подаете на программиста? – не унимался Иван. – Тоже хотите равенства достичь? А то среди программистов одни умные, недостаток дураков. Так дураки в нашей стране не меньшинство.
– Иван! Венки! – призывала Дана к порядку. – Мы все тут в одной лодке. Если кого-то пригласили на интервью, значит, он, она или оно этого достойно или достойна. Мне тоже сложно было вначале понять рекурсию. За одну минуту не объяснишь, что это такое.
– Смотрю, вы все уже без меня перезнакомились, – встряла дама. – Меня зовут Розалия Тальберг-Горовиц, прошу любить и жаловать. Я отработала десять лет рекрутером и прекрасно знаю, кого и за что приглашают на интервью. Не обольщайтесь. Я люблю готовить и вязать. Раз в месяц работаю волонтером, раздавая еду бездомным. А еще у меня дома живут две кошки…
– Кому интересны твои кошки? У нас мало времени, – огрызнулся на нее Иван.
– А у меня в ресторане жила игуана, – начал повествование Венки. – Хороший ресторан был. Уютный и домашний. Но в связи с последними событиями я вынужден был его закрыть и переучился на программиста. Попытался переучиться.
– А игуану повар съел? – пошутил Иван.
– Игуана теперь у меня дома живет, – нахмурился Венки.
– Мне кажется, что я вас видела раньше, – Дана пристально посмотрела на Венки. – Вы не давали недавно интервью телевизионщикам?
– Когда из-за карантина все стало закрываться, меня просили дать комментарии. Я уже не помню, – смутился Венки. – Я не публичный человек. Особенно сейчас, когда моего ресторана больше нет. Тридцать лет я на него потратил, и в один день все коту под хвост.
– Вот, что ваш социализм делает с малым бизнесом, – укоризненно глянул на Розалию Иван.
– Нет, это ваш капитализм ест людей. СЕО типа Лукаса только разжирели за этот год, – отвечала дама-рекрутер. – Сам-то зачем идешь в программисты? Так бы и служил себе до генерала. За пьянку уволили?
– Мой танк взорвался на мине, – помрачнело лицо военного. – Товарищи вытащили. Два дня я пролежал в коме. Руки и ноги целы, но специалист по голове сказал, что мне больше нельзя автомат в руки давать, и прямая дорога таким на голову ушибленным в программисты. Армия выдала сержанту Ивану Арройо “пурпурное сердце”, оплатила буткэмп по джаве и отправила на все четыре стороны. Когда я увидел о наборе на программу программистов-новичков “Счастливчик”, то подумал, кто же счастливчик, если не я?

Розалия сделала еще один шаг в сторону от Ивана.
– Надо же, – не отрываясь от клавиатуры, восхитилась Янг. – У всех такие грандиозные истории. И только я попала сюда сразу после колледжа. Но сейчас так сложно найти работу, даже интервью получить. Многие компании в этом году не нанимают. Сколько свежих выпускников сидят без работы. Значит, я тоже счастливчик.
– Не накаркай и не отвлекайся от кода, прошу тебя, – оборвала ее Розалия. – Один из счастливчиков уже отправился в свободное падание.
– Бернард Айвз, – произнес Венки. – Самоуверенного олимпиадника звали Бернард Айвз. Я запомнил его имя, когда нас вели сюда по коридору. Он-то гарантированно думал, что счастливчик это он.

Все замолчали. Только тихо постукивали по клавишам наманикюренные пальчики Янг. 
– А ты, Дана? Кем ты была в прошлой допрограммистской жизни? Ты нам не рассказала, – поинтересовался Иван.
– У меня PhD в астробиологии, – нехотя сказала она, будто для ученого стать программистом стыдно и неправильно.
– Что это такое? – удивился Венки.
– Астробиология? Поиск ответа на важнейший вопрос, стоящий перед человечеством: есть ли жизнь на Марсе?
– Ты собиралась лететь на Марс?
– Нет, я анализировала навоз бизонов в Йеллоустоне на предмет инопланетной жизни. И в какой-то момент мне это так надоело, что я ушла. Простите, я не хочу рассказывать о своей научной карьере. Она закончена.
– У Лукаса есть свой космический стартап, – пробормотал Венки.
– Лукас? Ты про гадкого СЕО, который грозит нам смертью и дал столь тупые задачи? – Розалии явно было, что сказать на его счет. – Он хуже Гитлера. Не платит налоги, чтобы строить на сэкономленные деньги камеры пыток для работников. Его ракеты дырявят озоновый слой и тем самым ускоряют глобальное потепление. Все конгрессмены-республиканцы им куплены.
– Угу. А еще он ест детей, чтобы сократить население Земли, – съязвил Иван.
– СЕО слишком богатый. Ему некуда деньги девать, вот он и чудит, – философски отметил бывший ресторатор. – Когда денег мало, плохо. Когда денег много, тоже плохо.
– Что вы его защищаете? – ополчилась на них Розалия. – У вас уже стокгольмский синдром развился? Он сгусток чистейшего зла. Сатана корпоративного мира.

11

– У нас все готово, – отрепортовала Дана.
– Я воспроизвела свое позавчерашнее решение, насколько его запомнила, – сказала Янг. – Запускаю?
– Подожди, – вмешался Иван. – Я не понимаю питон и не могу проверить твой код, но Бернард провалился, потому что он запустил свое ошибочное решение. За каждый баг положена смерть. Что если опасности подвергается именно тот, кто нажимает на кнопку “Отправить”? Мы не должны рисковать самым сильным своим программистом. Я имею в виду тебя, Янг. Древние римляне ставили в первый ряд легиона самых неопытных и бесполезных солдат.
Иван многозначительно посмотрел на Венки.
– Это республиканская логика! – заорала Розалия. – Мы не на войне и не в Древнем Риме. Она написала свой код, пусть за него и отвечает. Я не буду отправлять то, в чем ни строчки не понимаю.
– Я сейчас тебя схвачу и твоей рукой нажму, – пригрозил ей Иван. – Привыкла, пиявка, что за тебя все работают, а ты по тылам отсиживаешься и только плоды чужого труда пожинаешь.
– Остановите этого контуженного, – перепугалась бывшая рекрутерша. – Венки! Дана! На помощь!
– Давайте бросим жребий, – Дана вцепилась в Ивана, который готов был исполнить свою угрозу. – Так будет справедливее всего. Все согласны? Наша программа же называется “Счастливчик”.
– Несчастливчик, – буркнул Иван. – Ладно, давайте тянуть жребий. Что ты предлагаешь?
– Если бы тут был листок бумаги, – оглядывалась по сторонам Дана. – Мы могли бы написать на кусочках бумаги наши имена.
– У нас же бейджики есть, – догадалась Янг. – Можем их собрать в кучу и вытянуть имя.
– Не надо, у меня есть блокнот, – из потайного кармана своей топорщащейся куртки Венки выудил небольшой блокнот. – Я тут записал некоторые формулы и миссию компании, если нас ее спросят.
– Шпаргалка? – усмехнулась Янг.
– У нас же забирали все вещи, чтобы мы не могли ими воспользоваться, – удивилась Дана. – Телефоны, кошельки. Как они разрешили тебе эту куртку пронести? У тебя больше ничего там полезного нет?
– Нет, – смущенно промямлил Венки. – У меня память плохая. Я никак не могу эти for и if запомнить. Тут с двоеточием, там с точкой и запятой. Тут такие скобки, там сякие. Но карандаш я с собой не брал.
– Можно? – Дана протянула руку к блокноту, повертела его в руках, перелистнула несколько страниц. Больше записей Венки ее заинтересовал логотип компании, в которую они подавали, отпечатанный на каждой страничке в нижнем углу. – Поступим так: я вырву и сверну пять бумажек. Четыре будут пустыми, а одна с логотипом компании. Янг их перемешает. А потом мы последовательно их вытащим. Янг последняя, я – предпоследняя. Кому достанется с логотипом, тот и запускает. Согласны?

Все кивнули. Время поджимало. Через минуту пять смятых бумажек лежали на столе перед компьютером. Розалия первая схватила одну из них.
– Что у тебя? – боязливо спросил Венки.
– Вначале вы все возьмите, – Розалия прижала бумажку к груди.
– Это ничего не изменит, – Иван взял со стола еще одну и тут же развернул. – У меня пустая. Венки, твой ход.
Ресторатор сделал над оставшимися тремя бумажками магические пассы и дрожащей рукой схватил одну из них. Дана быстро выбрала свой жребий. Янг досталась последняя.
– Пусто, – Дана продемонстрировала свою развернутую бумажку.
– У меня тоже, – отозвалась Янг.
– Тоже мне счастливые печеньки, – презрительно фыркнула Розалия.
– Мы вас ждем, – посмотрел на нее с никуда не девшейся ненавистью Иван.
– Это не я, – радостно выдохнул Венки. – Пустая. Я счастливчик.
– То есть я могу свою и не разворачивать? Вы все сговорились против меня, – уперлась дама. – Воспользовались тем, что я дальше всего от компа стояла. Я требую пережеребьевку, но на этот раз я буду готовить бумажки.
– Может, тебе генератор случайных чисел написать? – раздражался военный.
– Пусть запускает она, – Розалия ткнула пальцем в Дану. – Она самая привилегированная среди нас. У нее уже есть PhD, зачем ей идти в программисты? Если она так хочет, пусть и рискует. К тому же она уже запускала первую задачу. Рука легкая.
– Хорошо. У нас осталось меньше пятидесяти минут. Я запущу, только отойдите в сторону, – Дана снова взялась за мышку.
– Нет, – Иван положил свою руку поверх ее. – Это нечестно. Отодвинься. Кто-то должен быть мужиком. Я нажму.
– Я не допущу сексистскую риторику в этих стенах! – подколола его Розалия.
– А я голосовал за Трампа и горжусь этим! – глаза Ивана налились яростью и вместо того, чтобы запускать программу, он бросился на ненавистную рекрутершу. Та завизжала от страха и закрыла лицо руками. Венки и Дана повисли каждый на своей руке Ивана, сдерживая ветерана от того, чтобы уменьшить число кандидатов еще до запуска кода.
– Отпустите, это она заразная, – вырывался он. – Я придушу гадину. Есть же такие токсичные люди.
– Его не должны были из армейской психушки выпускать! – Розалия забилась в ужасе в угол.

Свет в комнате мигнул багровыми тонами. “Ошибка: требуется число, найдена строка”, – огласил все тот же беспристрастный голос компьютерного помощника. Иван прекратил буянить и обернулся в сторону компьютера. Янг медленно опустилась на колени и распласталась на полу, раскинув руки.
– Что с ней? – опешил Венки. – Она упала в обморок?
Дана бросилась к девочке и стала нащупывать пульс.
– Она умерла? – испуганно выкрикнула Розалия из своего угла. – Ты же доктор, доктор Армстронг, ты можешь ей чем-нибудь помочь?
– Я не такой доктор, – растеряно сказала Дана. – Я не чувствую пульса, но не понимаю, что с ней произошло.
– Пока мы тут боролись, Янг запустила программу, но в ней оказалась ошибка, – Иван указывал на монитор. – Где-то с типами переменных напутано. Вместо чисел стоят строки.
– Это ты виноват! – принялась укорять его Розалия.
– Нет, ты. Жребий на тебя выпал.
– И прекрасно, что я не стала играть в ваши игры. Сейчас лежала бы бездыханная из-за ошибки, которую не я сама совершила. А так все справедливо.
– Стойте, – Дана подняла сложенные пальцы, измазанные в капельках крови. – Ее пронзила открывшаяся булавка из бейджика. В ней был быстродействующий яд.
Несостоявшаяся астробиолог скинула с себя бейдж и бросила его на стол перед компьютером. Иван, Розалия, а за ними и Венки последовали ее примеру.
– Больше ни у кого нет вещей, которые нам выдали перед интервью? Иван, помоги мне отнести ее в сторону. Спи спокойно, Янг Ли. Мы за тебя отомстим.
– Будем надеяться, что ее можно спасти, если мы поспешим с задачами.
– Бесполезно, – печальным голосом сказал Венки. – У нас в деревне в детстве такие кобры были. Раз укусят – и все, ничем не поможешь.

100

Иван и Дана уложили тело Янг вдоль стены. Венки с любопытством, но без малейшего понимания в глазах уставился в строчки кода на питоне. Где-то там закралась ошибка и, быть может, не одна. Но где? Розалия, обняв колени, уселась в своем углу на пол.
– Считайте, что мы на войне, – произнес отставной сержант. – Мы потеряли двоих боевых товарищей. Как старший по званию, я беру командование на себя. Мы с Даной разбираемся с задачами, а вы двое, – он указал пальцем на Венки и Розалию, – отправляетесь изучать диспозицию противника. Найдите все возможные входы и выходы, ловушки, растяжки. Обо всем подозрительном докладывайте лично мне. У нас осталось сорок три минуты, чтобы вырваться отсюда.
– И три задачи. Мне в своем углу хорошо. Не буду я искать приключений на свою задницу, – забубнила Розалия.
– Это приказ, – рявкнул Иван. – Встать, когда к тебе обращается старший по званию!
– Оставь их, пусть делают, что хотят, – потянула его к компьютеру Дана. – Вряд ли мастера игры оставили лазейки, кроме этих задач. Мы должны сосредоточиться и найти ошибку. А потом решить еще две задачи. Другого выхода у нас нет.

Венки стал вертеть головой по сторонам, потом подошел к стене и стал аккуратно постукивать по металлическим плиткам, стремясь обнаружить несуществующий тайник. Дана с Иваном уткнулись в монитор. Их лица были напряжены. Читать чужой код всегда непросто. Через пару минут Розалии надоело сидеть на холодном полу. Она выпрямилась, сделала несколько взмахов руками и ногами и присоединилась к Венки в его неуклюжих поисках.
– Докладывает рядовой Тальберг-Горовиц, – долго молчать ей было слишком тяжело. – Вижу компьютер, стол, дверь, над дверью огромный логотип компании, еще выше много лампочек, не могу сосчитать сколько. Там могут прятаться и камеры, и лазерные пушки.
Иван поднял голову. Слепящий свет в глаза. Как на допросе. И на его фоне прыгают строчки кода, которые отпечатались на сетчатке. Нет, если Янг, которая решала подобную задачу, ошиблась, то ему не найти баг в ее решении. Он учил джаву.

– Вижу решетку в полу. Чтобы туда могла стекать вода? – Розалия нагнулась над небольшим перегороженным отверстием в полу возле двери.
– Или кровь, – поморщился Венки. – Кто его знает, что придет в голову этому маньяку СЕО.
– Что тут у вас? – Иван подошел к решетке, заставив Розалию инстинктивно отшатнуться. – Не поддается, прочно сидит. Но даже если мы вырвем ее, никто из нас в эту щель не пролезет. Вентиляция в полу? В любом случае я бы держался от нее подальше, когда мы запускаем решение. Неизвестно, кто оттуда может выскочить. Продолжайте искать.
– Я нашла, – на этот раз говорила Дана. – Она запуталась с переменными в первоначальном массиве. Там не только числа. Там могут быть строки “M” – маски. Сейчас я добавлю str(n) в нескольких местах. Переведем все на строки.
– Надо думать хорошенько, и тогда никто не умрет, – Венки продолжал простукивать стены.
– Если думать слишком долго, то умрем мы все, – Иван был недоволен тем, что половина его отряда была небоеспособной. И отказывалась при этом ложиться на амбразуру. Но побеждать надо с теми войсками, какие есть.

– Готово, – Дана закончила править код. – Кто хочет рискнуть?
“Надо было лучше готовиться. Больше решать задач”, – мысленно укоряла она себя. “Сейчас может все закончиться. Или только начаться”.
– Шучу. Мой код, мне отвечать. Не поминайте лихом.
Вот уже второй раз за день она нажимала на кнопку “Отправить”. Ей снова захотелось зажмуриться, закрыть уши. Не видеть, в какие цвета окрасится комната, какую ошибку отыщет робот. Лишь бы все было так же быстро, как произошло с Янг. Смогут ли ее товарищи по несчастью выбраться без нее? Она никогда не узнает.

101

– Успех, – голос прихвостня СЕО признал, что наши герои решили две задачи. Самые простые, припасенные на это интервью. Но все же. Бывали дни, когда вся шестерка самонадеянных программистов гибла на самой первой. Жалкое зрелище. А у всех в резюме было записано по пять лет опыта в C++. Ну-ну.
– У тебя и вправду легкая рука, – Розалия поздравляла Дану. – Еще две, и мы приняты на постоянную позицию. Тебе явно надо будет просить прибавку, какую бы первоначальную зарплату тебе ни предложили. Плюс 10% минимум. Я тебе как опытный рекрутер советую.
– Да-да, – у Даны отлегло на сердце. – Только этот код был написан Янг. Я лишь исправила его в нескольких местах. Слушайте следующую задачу: “Бег по минному полю”.
– Только этого нам не хватало, – встрепенулся Венки.
– Дайте ее мне, это моя, моя задача. Я должен ее решить, – Иван отодвигал Дану от компьютера. – Они специально ее для меня подготовили. Это мое сражение. Мои Фермопилы.
– Какие пилы? – изумилась Розалия.
– Это место, где триста спартанцев остановили персидскую армию, – блеснула знаниями Дана.
– Смотри, чтобы эта задача не стала твоим Геттисбергом, – напутствовала рекрутер солдата.
– “Нелегальный мигрант перебирается через стену Трампа, представляющую собой минное поле. Проводник выдал ему список безопасных переходов, представленных в виде массива пар чисел”, – нетерпеливо читал Иван. – “Вернуть кратчайшее число переходов из 0 в N или –1, если безопасного пути нет”. Минус один, если безопасного пути нет, – еще раз перечитал он и посмотрел на других кандидатов.
– Ты знаешь, как такое решать? Не кажется очень сложным. Поиск пути в графе? – спросила его Дана.
– Я должен такое решить, но одна вещь меня смущает.
– Я могу решить вместо тебя.
– Нет, не надо, спасибо. Ты и так решила две задачи. Теперь моя очередь. Эту битву СЕО приготовил для меня.

Иван погрузился в работу. С его высоким ростом ему пришлось больше остальных скрючиться за компьютерным столом. Дана старалась следить за его решением, но Иван писал на джаве, которую она плохо знала. Сапер ошибается один только раз. Но Иван был танкистом. Кажется, он сам об этом рассказывал. Она не хотела сбить его неуместными расспросами. Джава так джава. Тоже хороший язык. Главное, помнить алгоритм.
До Розалии, наконец, дошло, что не надо отвлекать решателей задач, и она шепотом грузила Венки своими последними соображениями, какой разбойник СЕО. Тот методично простукивал стены, создавая видимость, что тоже занят общеполезным делом.

– Что это? – Венки присел на корточках слева от двери. Одна из металлических панелей оказалась не закрепленной. Он поддел ее ногтями и она отделилась. За ней обнаружилась большая красная кнопка.
– Ага, – Розалия принялась радостно потирать ладоши. – А вот и пульт управления дверью. Вы как хотите, но мне надоела эта игра в сапера. Я в нее могу и в офисе поиграть. Не хочу больше быть программистом. Я сдаюсь.

Она отодвинула мешкавшего Венки и что было сил и дури навалилась на блестящую металлическую кнопку. Но вместо открытия двери лампочки – в который уже раз – переключились в кровавый режим. “Ошибка в синтаксисе”, – объявление робота слилось с воплями Розалии, которая билась в конвульсиях перед дверью.
– Что за нахрен? – отпрянул от компьютера Иван. – Я ничего не запускал. Оно само на середине строки.
– Розалия?! – Дана пыталась сообразить, что произошло.
– Стой! – сейчас была очередь Ивана оттаскивать ее. – Ее, по-видимому, шандарахнуло током. Если ты до нее дотронешься, и тебя тоже убьет. Венки, не трогай ее. Что это за кнопка?
– Я не з-знаю, – запинался Венки. – Я открыл одну металлическую панельку, там была эта кнопка, и Розалия на нее нажала.
– Черт. Я же просил ничего без меня не трогать, только мне докладывать, – Иван не выдержал и плюнул на пол. – Розалия с возу, программистам легче. Я потерял мысль: если k меньше, чем nodes[n]…
– Нехорошо ее так оставлять, – Дана приблизилась к застывшему телу Розалии. – Кажется, разряд тока действовал только то мгновение, когда она дотронулась до кнопки. Сколько же в нем было вольт, если ее моментально убило? Значит, эта кнопка тоже запускает код на компьютере? Зачем она тут?

Дана и Венки осторожно перенесли тело Розалии к Янг. Их кандидатский отряд сократился наполовину. Дана представила, как в обитом деревом кабинете потешается кровожадный СЕО Лукас, наблюдая за их страданиями. Поглядывает на часы, ожидая бесславной развязки через двадцать минут. Нет ни малейшего шанса, что они решат за них столько же задач, сколько решили за истекшие 70 минут. Как им не хватает сейчас Янг.
– Я решил, – Иван разогнулся и стал потирать затекшую поясницу. – Жаль, этот волосатик – забыл, как его звали – стул с собой прихватил, когда вниз провалился. Он бы сейчас нам пригодился. Готовы к забегу по минному полю?
– Насколько ты уверен в своем коде? – уточнила Дана.
– На 45%.
– Так мало?
– Я на 90% уверен, что у меня все запрограммировано правильно. Но я не могу понять: этот граф направленный или нет?
– То есть что означает (0, 1) в примере? Что можно безопасно перейти из 0 в 1 или еще и из 1 в 0?
– Именно. Смотри, тут есть пример ввода: (0, 1), (1, 2), (2, 0). Пусть надо идти из 0 в 2. Если граф направленный, то ответ 2: (0, 1), а затем (1, 2). Но если он ненаправленный, то ответ 1: по последнему ребру можно сразу пройти.
– А какой вывод для этого ввода?
– Не указано. Мы должны сами догадаться.
– Как в задаче о свиньях ничего не было о “–1”? Вот свиньи. Давай посмотрим последнюю задачу. Вдруг там в условии есть подсказка?
Они переключились на четвертую задачу.
– “Провалившийся Ви-Пи”. Нет, тут совсем не то, – разочаровано сказала Дана.
– Я написал два решения, – тыкал пальцем в монитор Иван. – Для одного случай и для другого. Запоминай. Одно из них я закомментировал. Будем экспериментировать. Мне кажется, что граф по умолчанию должен быть направленным. Иначе глупо задавать ребра вида (2, 0). Ладно, сейчас проверим.

Иван, как и Дана во время запуска первой задачи, отошел с мышкой на середину комнаты. Доктор Армстронг и Венки притихли возле тел павших товарищей. Иван сплюнул еще раз. Дана вспомнила, как у нее потели руки во время отправки задачи о свиньях.
– Вперед! На врага! – заорал Иван и нажал на кнопку “Отправить”.
Красный свет, крик Даны: “Нет!!!”, “Ошибка. Неправильный ответ. 2 вместо ожидаемого 1”. И сокрушительный взрыв.

110

Когда Дана пришла в себя, она увидела лежащего посреди комнаты Ивана. Он был весь в крови. От правой руки, сжимавшей мышь-мину, ничего не осталось. Весь правый бок был разорван. Но он был еще жив и тяжело дышал.
– Иван! Иван! Не умирай, – Дана попыталась остановить кровь, но слишком много сосудов было разорвано.
– Доктор, осталось пятнадцать минут, нам надо решить задачи, а его уже не спасти, – Венки положил ей руку на плечо.
– Он прав, – прохрипел Иван. Из уголка его рта потекла кровавая слюна. – Слушай меня, раскомментируй второе решение. Граф ненаправленный. Список безопасных путей. И туда, и обратно.
– Помолчи. Дай мне свою куртку, Венки, я хочу закрыть его раны.
– Слушай меня, – Иван шептал из последних сил. – Раскомментируй второе решение и закомментируй неправильное. Действуй, Дана. Ты должна спастись. Мне выпала большая честь решать задачи вместе с тобой.

Иван замолк. Дана дала волю слезам.
– Одни мы остались, мэм. Вы сможете решить оставшиеся задачи? – канючил Венки.
– Не называй меня так, – всхлипывала она. – Я не знаю джаву. У нас нет времени. Я не знаю даже, как управлять этим компьютером без мыши. Мы погибли.
– Смотрите. Тут можно перемещаться клавишами. “Tab” позволяет переключаться между задачами. Только запустить мы их больше не можем с компьютера, но есть та красная кнопка перед входом.
“Собраться, отставить истерики”, – повторяла про себя Дана. “Выбраться отсюда. Решить задачи. Иван решил третью. Закомментить, раскомменить. Что может быть проще?”.
– Венки, мы остались вдвоем. Это наш последний шанс. Мы должны добраться до СЕО и отомстить за гибель наших друзей. О чем там четвертая задача?
– “Провалившийся Ви-Пи”, – Венки закашлялся. – “Даны два листа фамилий американских президентов и вице-президентов. Выведите, сколько вице-президентов не стали президентами”.
– Это все? – Дана подошла к компьютеру, смахивая слезы. – Так, два листа. Вычитаем один из другого. Нет, это не работает в питоне. Или работает? Безопасный способ: идем по листу вице-президентов, если есть тот же элемент в листе президентов, то пропускаем, иначе добавляем один к счетчику.

Она принялась писать код, продолжая комментировать решение вслух. Ей было так проще сосредоточиться на задаче. Надежды на Венки было мало.
– Стали президентами или не стали? – переспросила она. – У меня все перед глазами плывет и путается. Это или очень простая, или очень сложная задача. Тут же нам даны уже два листа с готовыми фамилиями, так? Я запускаю? Ты сказал, что та кнопка у двери сработает?
– Погодите, – возглас Венки заставил Дану остановиться у двери. – Джон Адамс был первым вице-президентом, и он стал вторым президентом. Джефферсон стал президентом. Аарон Берр, который убил Александра Гамильтона, не стал. Правильно. Но вот четвертый вице – Джордж Клинтон, он не стал президентом.
– И? – Дана непонимающе смотрела на Венки.
– Идите сюда. В вашем коде будет проверка, есть ли фамилия Клинтон в листе президентов. И она там будет из-за Билла Клинтона. Но Джордж Клинтон президентом не стал.
– Я запуталась, Венки, – Дана обхватила руками голову. – Я устала. Я хочу закончить с этими задачами. Будь, что будет.
– Это не программистская задача. Она историческая. Смотрите. Я сейчас все распишу, – Венки снова вытащил свой блокнот-шпаргалку, открыл его на пустой странице и начал записывать. – Два президента Адамса – отец и сын, отец был первым вице-президентом. Два Буша – отец и сын, один был вице при Рейгане, другой не был. Три вице-президента по фамилии Джонсон – не родственники, одного – Ричарда Ментора Джонсона – никто не помнит, двое других были вице у убитых Линкольна и Кеннеди соответственно и стали президентами. Это расхождение уже на два с вашим ответом. Два Харрисона – дед и внук, дед умер быстро. Два Рузвельта – пятиюродные дядя и племянник, Тедди был вице при убитом Мак-Кинли. В листе президентов два Кливленда – но это один и тот же человек, который избрался на два срока не подряд. Между его сроками был второй Харрисон. Генри Вильсон, один из вице-президентов при Гранте, и Вудро Вильсон – расхождение на три.

Дана безучастно взирала на выписывающего фамилии Венки. Все эти имена президентских кланов, убивающих и убитых, пролетали мимо ее ушей. Она пыталась сосредоточиться на других вещах. Карандаш у Венки все же был. Зачем было нам врать? Логотип компании в блокноте. Где я его до этого видела?
– Откуда ты это все знаешь? Всех этих вице-президентов? – спросила она, наконец.
– Я был первым студентом по американской истории в Уортоне, – хвастливо улыбнулся Венки и решил внести небольшую поправку в код. – Должно быть на три вице-президента больше, чем показала бы твоя программа. Видишь, иногда мы оказываемся умнее вас, простых программистов.
“Провалившийся Ви-Пи”, – размышляла Дана. “Венки Пател. Ви-Пи! Я вспомнила”. Холодок прошел у нее по спине. Она еще пристальнее посмотрела на своего оставшегося товарища.
– Венки, а что это у тебя еще в кармане куртки? Что он так топорщится?
– Где? Ничего? Шапка, может быть. Не трогай!

Но Дана уже вытащила на свет противогаз.
– Надо же, как удобно.
– Я ношу его с собой от вируса, – Венки столь же напряженно смотрел теперь на Дану.
– Врете, господин вице-президент компании, – прошипела она. – Через десять минут эта комната наполнится ядовитым газом. Вы знали об этом и хотели спастись. Зачем вы нас обманывали? СЕО послал вас следить за нами? Активировать ловушки?
– А вот зачем! – вместо ответа Венки схватил один из лежавших перед компьютером бейджей, закинул ленточку на шею Дане и резко затянул.

111

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

Все предметы в комнате поплыли перед глазами Даны. Она задыхалась. Свет в комнате показался не красным и не зеленым, а фиолетово-желтым. Она потянулась ко кнопке. Удавка расслабилась на ее шее. Венки свалился на нее сверху. Дана отпихнула его и откатилась в сторону, жадно хватая воздух ртом и массируя шею. Неужели она запустила решение, но очередная западня убила псевдо-Венки, а не ее? Она перевернулась на спину и не могла понять: галлюцинацию она видит или призрака. Перед ней стояла бледная Янг Ли.

В руке она сжимала туфлю с окровавленным каблуком, которой она огрела вице-президента по голове. Ее взгляд блуждал столь же потерянно, как и у Даны.
– Янг! – радостно прокричала доктор.
Та помогла Дане подняться, и две девушки крепко обнялись.
– Что тут произошло? – пролепетала Янг. – Я запустила задачу, и в моей груди закололо. Я очнулась, а рядом со мной лежит та мертвая рекрутерша. Я встала и вижу, что Иван тоже убит, а Венки душит тебя.
– Долго объяснять, – заторопилась Дана. – У нас еще есть несколько последних минут, чтобы решить задачи и спастись. Но это не скромный ресторатор Венки Пател, а вице-президент этой компании Имран Дашти. Я видела его фотографию, когда готовилась к этому интервью. Я должна была его сразу узнать. Помоги мне его связать. Не убила же ты его своей туфлей?
– Надеюсь, что нет.
– Он играет за Лукаса. Янг, посмотри на компьютере задачу три, – Дана раздавала команды, связывая руки Имрана все той же лентой от бейджа, которой он ее чуть не задушил. – “Tab” для переключения задач. Иван перед смертью написал два решения на джаве. Одно из них не прошло. Надо его закомментировать, а другое – для ненаправленного графа – раскомментировать.
– Хорошо, – Янг покачивающейся походкой направилась к компьютеру. Один раз СЕО и его слуги просчитались, и их яд не смог прикончить эту хрупкую девушку.

Имран начал приходить в себя, замычал и выпучил глаза.
– Как нам отсюда выбраться? Говори! – Дана принялась хлестать его по щекам.
– Пощады, – застонал ви-пи. – Я ничего не знаю. СЕО послал меня проходить эту комнату вместе с вами. Единственный способ ее пройти – это решить все задачи. Я сам не знаю на них ответа.
– Ты лжешь! Ты пытался меня убить.
– Я хотел, чтобы ты проверила решение. Я бы не убил тебя. Мне тоже надо решить все задачи, чтобы спастись. Противогаз помог бы только продержаться лишние пару минут.
– Зачем СЕО будет подвергать своего вице-президента смертельной опасности?
– Потому что он сумасшедший! – глаза Имрана округлились от ужаса. – Он вызвал меня вчера в свой кабинет и заставил рассказать миссию нашей компании. А у меня плохая память. Я не помню ее наизусть. Это разозлило его, и он приказал бросить меня в тюрьму – в нашей штаб-квартире есть и такое место. А утром меня отвели вместе с вами в эту комнату.
– Почему ты не рассказал нам об этом сразу?
– Вы бы убили меня, как шпиона. Стали бы пытать, чтобы узнать решения задач, а я их не знаю.
– То есть СЕО готов убить своего вице-президента из-за такой ерунды? – недоверчиво глянула на него Дана.
Имран замотал головой.
– Говори словами, – продолжила допрос Дана. – Я не помню эти ваши покачивания головой. Означают они “да” или “нет”.
– Да, готов, – выдавил из себя разжалованный ви-пи. – Для него человеческие жизни – это пыль. Видели бы вы, какие он казни придумывал в этой комнате. Выпускал живых голодных питонов, когда люди делали ошибку в библиотеках питона. Он называл “счастливчиков” своими программистами-гладиаторами. Лукас верит, что у него пульт управления всем миром.
– То-то я не могла найти никого, кто прошел в компанию через эту программу. “Счастливчик” – какое издевательское название.
– Дана, – раздался голос Янг. – Я думаю, что я все правильно сделала в третьей задаче, но я не понимаю, как переключиться на кнопку “Отправить”.
– Там есть кнопка у двери, она тоже отправляет решения на проверку.
– Ага, вижу.

Янг направилась к двери, но Дана подхватила оброненный противогаз и кинулась к кнопке быстрее своей подруги.
– Назад! – она пододвинула Янг. – Кнопка может быть под высоким напряжением. У меня есть противогаз. Долго объяснять, откуда он взялся. Но его резиновая поверхность должна выступить изолятором.
Дана запустила руку внутрь противогаза и присела на корточки перед кнопкой. В тот же миг Янг бросила взгляд на противоположную стену и обомлела: перед компьютером стоял высвободившийся Имран и нажимал какие-то клавиши. Янг изо всех сил пихнула Дану в сторону с целью помешать ей нажать на кнопку, но было поздно. Свет в комнате побагровел, голос провозгласил: “Ошибка: функция не найдена”, – и гигантский логотип компании, висевший над дверью, затрясся и рухнул вниз. Всю силу падения приняла на себя голова Янг, которая раскололась как яйцо. Дану спасло только то, что девочка успела отпихнуть ее в сторону, и железный логотип свалился Дане не на голову, а на ноги.

1000

Только Дана оправилась от шока и начала соображать, где она находится, как над ней нависла тень вице-президента Имрана.
– Так-так-так, – хищно сказал он. – За каждое неправильное решение один кандидат должен умирать. Неправильных уже было пять, а живы двое. Непорядок. Лукасу такое не понравится.
В его руке блеснул нож – еще один обитатель закутков синей куртки. Дана попыталась встать, но ее левая нога была крепко прижата тяжелым блином логотипа.
– Отдай мне противогаз, красавица, или я возьму его с твоего окровавленного трупа, – вице-президент поднес нож к ее горлу.
“Пять ловушек сработало. Значит, осталась еще одна”, – подумала Дана. Терять ей было уже нечего.
– Держи! – крикнула она, откидывая противогаз. Имран распрямился, а Дана со злостью ударила правой ногой по кнопке.

“Ошибка: функция не найдена”, – повторил робот. Вся красная комната пришла в движение. Она резко повернулась на 90 градусов на колоссальных шарнирах. Человеческие тела и незакрепленные предметы заскользили по наклонившемуся полу и полетели к боковой стене. Имран не удержался на ногах и упал прямо на нож, вошедший ему в сердце. Но он не успел осознать произошедшее, так как через секунду он был добит падающим логотипом компании.

Дана висела высоко в воздухе, уцепившись обеими руками за решетку, которую обсуждали Иван с Розалией. Ее ноги были теперь свободны, но стоит ей разжать пальцы, и она соскользнет по стене-полу, переломает их, а затем неизбежно задохнется в облаке ядовитого газа. Но кто бы ни управлял ловушками, он был доволен произведенным эффектом. Комната вновь начала вертеться и, сделав полный оборот, вернулась в исходное положение. “Перевернуть весь мир на 360 градусов – и посмотреть, что будет”, – вспомнила Дана лозунг из миссии компании. Ушибленное тело плохо слушалось. Хромая на левую ногу, она добралась до компьютера, который вместе с клавиатурой был прочно привинчен к столу и пережил переворот без изменений. Окно с решением третьей задачи было пустым.

Дана еле могла пошевелить пальцами, но желание добить все задачи перебороло боль. Еще хорошо, что она успела переставить руки, когда висела на решетке под потолком, иначе сломала бы запястья, и игра была бы закончена. Она нажала “Ctrl + Z”, и, к ее счастью, на экран вернулось решение Ивана, которое подправила Янг и которое коварно стер Имран. На счетчике времени оставалось еще две минуты, хотя Дане казалось, что прошла вечность с того момента, как она вывела вице-президента на чистую воду.

Девушка дохромала до двери и пнула роковую кнопку. “Успех”, – подтвердил голос. Последняя из кандидатов оглядела комнату, которая стала похожа на уровень из трехмерной стрелялки. Дана согнулась и подняла залетевший в угол противогаз. Рядом с ним валялся блокнот Венки. Или уже не Венки, а Имрана. Мозги Даны были завернуты в узел. Ей нужен был последний умственный рывок, чтобы решить за минуту последнюю задачу. Она раскрыла блокнот: отличник Уортона успел выписать туда все 48 фамилий вице-президентов, некоторые из них были зачеркнуты. Дана сообразила, что это те ви-пи, которые стали президентами. Задача же требовала вернуть число тех, кто не стали. Она пересчитала перечеркнутые имена: Адамс, Джефферсон, Ван Бюрен…

Дана стояла перед компьютером, переключенным на последнюю задачу, и никак не могла сделать последнее действие: вычесть из сорока восьми четырнадцать. Наконец, она стерла свое прежнее решение. Эта задача решалась в одну строчку: через возвращение единственного числа. Время вышло. Замигали красные лампочки, открылись многочисленные металлические панели, скрывавшие трубы, из которых повалил густой желто-зеленый газ. А Дана ползла на четвереньках к двери. На ней был надет противогаз, который дарил драгоценные секунды жизни. “Я не успела”, – ругала она себя. “Но хотя бы узнаю, правильно посчитала или нет”. Уже в четвертый раз нажала она заветную кнопку.

“Успех!” – обрадованно сообщил электронный помощник. “Программа ‘Счастливчик’ пройдена”.
Дана лежала без чувств и не видела, как закрылись газовые трубы, как включились вентиляторы, компьютер отъехал в сторону, и за ним открылся коридор. Его стены были зеркальными, отчего казалось, что он вел в бесконечность.

1001

Дана открыла глаза, стянула противогаз, поднялась на ноги, держась за стену. Стараясь как можно меньше наступать на левую ногу, она двинулась по зеркальному коридору навстречу возникшей в нем темной фигуре.
– Рад нашей встрече, доктор Армстронг. Никому раньше не удавалось решить все четыре задачи в “Счастливчике”. От всей души поздравляю. Правда, ваше время 1:30:34, но мы закроем глаза на эти секунды.
– Я не решила сама ни одной задачи.
– Странно, а у меня записано, что вы запускали все правильные решения.
– Мне просто повезло.
– Ценю скромность в людях. Какая вы упрямая, сообразительная. И красивая.

Дана прекрасно видела свое отражение в зеркалах: волосы растрепанны, на шее следы от удавки, блузка в крови. Красивая, как богиня Ника. Спасибо еще, что голова на месте.
– Зачем, Лукас? Зачем устраивать эти кровавые игры?
– Очень давно и я был начинающим программистом, – лицо СЕО помрачнело. – Я выпрашивал интервью в компаниях, но не мог решить ни одной задачи. Можно сказать, что был травмирован “круглыми люками”. Кто никогда не проходил через мясорубку интервью, не может понять мои мучения. Я отказался от мысли работать по найму и построил эту компанию на вашем же принципе: пусть решают другие, а я буду только запускать. Но двадцать лет я мечтал придать этим интервью с задачами хоть какой-то жизненный смысл. Для повышения мотивации сразу писать чистый код. Так родилась программа “Счастливчик”. И этот счастливчик сегодня – вы. Ужасное совпадение, но сегодня же я лишился верного вице-президента. Предлагаю вам занять его место с зарплатой в 700к в год. Что скажете?

СЕО протянул девушке руку, а та, наконец, смогла вытащить припасенный в секретном кармане джинсов сюрприз.
– Скажу, что теперь у нас достаточно доказательств. Лукас, вы арестованы за организацию убийств. И кражу данных пользователей, – добавила она.

Защелкивая наручники у него за спиной, она успела посчитать, что 700к – это десять ее годовых окладов. Но быстро отогнала эту меркантильную мысль. Майор отдела кибербезопасности ФБР Диана Олдрин работала не ради денег.


Сиэтл, август 2020 года


Рецензии