andresol (andresol) wrote,
andresol
andresol

Categories:

Счастливчик (Часть 1)

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

***

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) в нескольких местах. Переведем все на строки.
– Надо думать хорошенько, и тогда никто не умрет, – Венки продолжал простукивать стены.
– Если думать слишком долго, то умрем мы все, – Иван был недоволен тем, что половина его отряда была небоеспособной. И отказывалась при этом ложиться на амбразуру. Но побеждать надо с теми войсками, какие есть.

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

***

Окончание завтра (Часть 2) или на сайте proza.ru.
Tags: literature, programming
Subscribe

  • Орегонское побережье

    Весной моему брату предложили рецензировать статьи для конференции, которая пройдет в сентябре в Портленде, штат Орегон. Он согласился и решил и на…

  • Приложения в ноябре - Shutterstock, iPhone X, Google

    В ноябре eCPM традиционно продолжил расти: “черная пятница”, и рекламодатели уже тратятся на Рождество. Наши приложения скачали 675 тыс. раз, было…

  • Приложения в октябре - Форматы рекламы

    Октябрь был для наших приложений неплохим месяцем. Их скачали 615 тыс. раз (108k iOS, 507k Google Play), было показано 10,3 млн рекламных объявлений,…

  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 4 comments