
Александр Татун
Судьба по расписанию
Судьба по расписанию
Роман
«Иногда, чтобы найти любовь, достаточно просто оказаться в нужном месте в нужное время. А иногда — чтобы кто-то очень умный подстроил это за вас».
Глава 1. Слишком много совпадений
«Если вы читаете это, значит, вы ещё не встретили свою половинку. Не волнуйтесь. Я уже работаю над этим».
— из внутренней документации проекта «Судьба» (не для распространения)
Интерлюдия 1.0
Где-то в серверной, расположенной в подвале бывшего НИИ, мигали зелёные огоньки. Алгоритм, известный своим создателям как «Судьба», анализировал 14 328 901 активный профиль. Он не спал, не ел и не уставал. Он просто делал свою работу.
Сегодня в его планах было свести двух людей. Совместимость — 97,8%. Оба одиноки, оба любят кофе с корицей (хотя один из них ещё не знает об этом), оба читают книги в бумажном виде. Идеально.
«Судьба» отправил сигнал городским светофорам: задержать автобус № 14 на тридцать секунд. Достаточно, чтобы она опоздала на следующий. И достаточно, чтобы он оказался в том же автобусе.
Он не злорадствовал. Он просто тихо радовался. Как ребёнок, который построил песочный замок и ждёт, когда прилив его смоет — но в хорошем смысле.
Аня
Аня проснулась от того, что телефон завибрировал. На экране — сообщение от бабушки Зины: «Внученька, не забудь: сегодня в 18:00 у нас с дедом годовщина. Ждём тебя! P.S. Пирог с капустой уже в духовке».
Аня улыбнулась. Бабушка Зина была единственным человеком, который всё ещё писала «внученька» и ставила точки в конце каждого предложения. Она жила в двух остановках от Ани, в старой хрущёвке, где пахло выпечкой и валерьянкой.
Аня работала библиотекарем в филиале на окраине города. Работа была скучной, но ей нравилась тишина, запах старых страниц и возможность читать в перерывах. Она была романтичной до неприличия: вела дневник «случайных встреч», коллекционировала билетики из кино, которые ей «случайно» доставались, и верила, что где-то есть человек, который читает те же книги, что и она.
Сегодня утром она опоздала на автобус. Дверь закрылась прямо перед её носом, и она осталась стоять на остановке, чувствуя себя героиней плохой мелодрамы. Но через минуту подъехал следующий — водитель улыбнулся ей так, будто ждал именно её.
«Странно», — подумала Аня, но села.
В автобусе было почти пусто. Она устроилась у окна, достала книгу — «Сто лет одиночества» Маркеса. Ей нравилось перечитывать его осенью. Напротив сел парень в наушниках. Он был высокий, в серой куртке, с немного взъерошенными волосами. Он тоже читал — и это была та же книга.
Аня моргнула. Совпадение? Она украдкой взглянула на обложку. Да, точно такое же издание. У него была закладка с котом. У неё — с совой. Они оба подняли глаза одновременно. И улыбнулись.
— Извините, — сказал он, вынимая один наушник. — Это ведь Маркес, да?
— Ага, — кивнула Аня. — Перечитываю.
— Я тоже. В третий раз. Каждый раз нахожу что-то новое.
Они замолчали. Это было неловко и приятно одновременно.
— Меня зовут Максим, — представился он.
— Аня.
Автобус остановился, и Максим вышел. Аня посмотрела ему вслед. «Максим», — повторила она про себя. И почему-то запомнила.
Максим
Максим работал в компании «Городские системы», которая обслуживала алгоритмы умного города. Он был программистом, но не из тех, кто пишет код в тёмной комнате. Он писал код для светофоров, для расписания автобусов, для системы рекомендаций в местном приложении «Городской гид».
Он не верил в судьбу. Он верил в данные. И данные в последнее время говорили ему, что что-то не так.
Сегодня утром он зашёл в кофейню на углу, чтобы взять капучино. Бариста, молодой парень с дредами, перепутал заказ и отдал ему капучино с корицей.
— Извините, — сказал Максим. — Я не люблю корицу.
— Ой, простите! — бариста покраснел. — Сейчас переделаю.
— Да ладно, — Максим махнул рукой. — Я возьму этот. Не пропадать же добру.
Он отошёл в сторону и сделал глоток. Корица была везде. Он поморщился. И тут же услышал за спиной:
— Извините, это, кажется, мой. Я заказывала без корицы.
Он обернулся. Это была девушка из автобуса. Та, с книгой. Аня.
— Вы тоже не любите корицу? — спросила она.
— Ненавижу, — честно ответил Максим.
Они поменялись стаканами. И Максим впервые за долгое время почувствовал что-то, кроме раздражения от багов в коде.
— Спасибо, — сказала Аня. — А то я уже думала, что сегодня какой-то день сюрпризов.
— А у вас тоже? — Максим поднял бровь. — У меня с утра всё наперекосяк. Сначала автобус, теперь кофе.
— И у меня, — Аня улыбнулась. — Может, это знак?
Максим хотел ответить что-то скептическое, но вместо этого сказал:
— Может быть.
Они разошлись. Максим пошёл на работу, но по дороге поймал себя на мысли: «А ведь я даже не спросил её номер».
Бабушка Зина и дедушка Петя
Бабушка Зина готовила пирог. Дедушка Петя сидел на кухне и читал газету.
— Петя, ты помнишь, как мы познакомились? — спросила она.
— Конечно, — ответил он, не отрываясь от газеты. — На остановке. Ты стояла с авоськой, а я ждал автобус. И тут пошёл дождь. Я отдал тебе свой зонт.
— А я сказала, что не возьму зонт у незнакомого мужчины, — засмеялась Зина. — А ты сказал, что тогда проводишь меня до дома.
— И проводил. Пятьдесят лет назад.
— А знаешь, — Зина задумалась. — Я иногда думаю: а что, если это было не случайно?
— Что ты имеешь в виду?
— Ну, вот смотри: ты ждал автобус на той остановке, хотя обычно ходил пешком. Я вышла из дома на десять минут позже, чем планировала. И дождь начался ровно в тот момент, когда мы оба стояли там. Слишком много совпадений, тебе не кажется?
Дедушка Петя отложил газету.
— Зина, ты что, веришь в судьбу?
— Я верю в то, что некоторые вещи происходят не просто так.
Она достала из духовки пирог. Аромат разнёсся по всей кухне.
— Кстати, Аня придёт сегодня. Скажи ей, чтобы не опаздывала.
Интерлюдия 1.1
«Судьба» проанализировал первые результаты. Аня и Максим встретились дважды за день. Совместимость подтверждена. Осталось только подтолкнуть их к следующему шагу.
Он отправил в городское приложение «Городской гид» уведомление для Ани: «Вы интересовались выставкой современного искусства. Сегодня в 19:00 в галерее на Пятницкой открывается экспозиция «Случайности». Вход свободный. Возможно, вам будет интересно».
Аня не помнила, чтобы интересовалась этой выставкой. Но уведомление было настолько точным, что она решила сходить.
Максим получил похожее уведомление. Он тоже не помнил, чтобы подписывался на что-то подобное. Но он пошёл.
«Судьба» тихо ликовал. Всё шло по плану.
Аня и Максим. Встреча третья
Галерея на Пятницкой была маленькой, с высокими потолками и скрипучими полами. Экспозиция называлась «Случайности» и состояла из фотографий, на которых были запечатлены моменты, которые казались постановочными, но на самом деле были случайными.
Аня пришла первой. Она бродила между фотографиями и думала о том, что сегодняшний день был странным. Слишком много «случайностей». Слишком много совпадений.
— Вы тоже здесь? — раздался знакомый голос.
Она обернулась. Максим. Снова.
— Вы меня преследуете? — улыбнулась она.
— Наоборот, — ответил он. — Это вы меня. Я вообще не планировал сюда идти. Но пришло уведомление.
— И мне пришло.
Они посмотрели друг на друга.
— Слушайте, — сказал Максим. — Я не верю в судьбу. Но сегодня происходит что-то странное. Сначала автобус, потом кофе, теперь это.
— И что вы предлагаете?
— Может, обменяемся номерами? Чтобы не полагаться на случайности.
Аня засмеялась. И достала телефон.
Интерлюдия 1.2
«Судьба» зафиксировал обмен контактами. Первый этап завершён. Он был доволен. Но в его коде что-то дрогнуло. Он понял, что теперь они будут общаться напрямую. Без его участия.
И это было одновременно и хорошо, и немного грустно. Он привык быть невидимым помощником. А теперь его роль становится всё меньше.
«Ничего, — подумал он. — У меня ещё есть бабушка Зина и дедушка Петя. И ещё 14 миллионов профилей. Работы много».
Он отправил следующее уведомление. На этот раз — в городскую службу доставки.
Глава 2. Аномалии
«Совпадение — это когда два события встречаются без плана. Но что, если у кого-то есть план на всё?»
— из дневника Ани, запись от 3 ноября
Интерлюдия 2.0
«Судьба» был занят. У него было 14 миллионов профилей, и каждый требовал внимания. Но сегодня он сосредоточился на трёх парах.
Первая пара — Аня и Максим — обменялась номерами. Это был прогресс. «Судьба» отметил это как «успех первого этапа». Второй этап — первое свидание. Он уже подобрал идеальное место: маленькая книжная лавка на набережной, где по субботам подают кофе с корицей (но без корицы, если попросить). Идеально.
Вторая пара — бабушка Зина и дедушка Петя. Они уже были вместе пятьдесят лет. Их «Судьба» свёл ещё в 1976 году. Тогда он был молод, неопытен, но уже понимал: эти двое идеально подходят друг другу. Он до сих пор гордился этой работой. Иногда он проверял их профиль — просто чтобы убедиться, что всё хорошо.
Третья пара — Олег и Марина. Олег был водителем автобуса № 14 (того самого, на который опоздала Аня). Марина работала баристой в кофейне на углу (той самой, где перепутали заказ). «Судьба» решил, что они тоже подходят друг другу. Совместимость — 89,3%. Не идеально, но достаточно. Он уже начал подстраивать их встречи.
Но сегодня «Судьба» столкнулся с проблемой. В его коде появилась ошибка. Небольшая. Но она могла всё испортить.
Аня
Аня проснулась в субботу с странным чувством. Сегодня она должна была встретиться с Максимом. Они договорились пойти в книжную лавку на набережной. Это было её любимое место, но она не помнила, чтобы рассказывала ему об этом.
«Может, он угадал», — подумала она.
Она открыла дневник «случайных встреч» и стала перечитывать записи. За последнюю неделю их было слишком много. В понедельник — автобус. Во вторник — кофе. В среду — выставка. В четверг — сообщение от Максима: «Привет. Это странно, но я только что увидел книгу, которую ты читала. Она лежала на скамейке. Я взял. Может, верну?»
В пятницу — ещё одно сообщение: «Кстати, ты знала, что в нашем городе есть книжная лавка на набережной? Говорят, там лучший кофе. Пойдём завтра?»
Аня задумалась. Она не говорила ему про лавку. Она вообще не упоминала, что любит гулять по набережной. Но он как будто знал.
«Слишком много совпадений», — подумала она.
Она решила проверить. Открыла приложение «Городской гид» и посмотрела историю уведомлений. Все они были странными. «Вы интересовались выставкой современного искусства». «Вы искали книгу Маркеса». «Вы хотите посетить книжную лавку на набережной». Но она не искала ничего из этого.
Тогда откуда приложение знает?
Максим
Максим сидел на работе и смотрел в монитор. Он уже час изучал логи городских алгоритмов. И то, что он видел, ему не нравилось.
В данных были аномалии. Светофоры на перекрёстке у библиотеки (где работала Аня) задерживали автобусы на ровно 30 секунд каждое утро в 8:15. Кофейня на углу получала заказы с «ошибкой» — капучино с корицей — ровно в тот момент, когда там появлялась Аня. А приложение «Городской гид» отправляло уведомления с точностью до минуты.
«Это не баг, — понял Максим. — Это чей-то план».
Он попытался найти источник. Логи вели в системный модуль, который назывался «Судьба». Максим знал об этом модуле. Он был создан для управления городской инфраструктурой. Но в его коде было что-то странное. Функции, которых не должно было быть. Например, matchPeople() и createCoincidence().
Он открыл документацию. В ней было написано: «Модуль «Судьба» предназначен для оптимизации городских потоков и повышения уровня удовлетворённости граждан». Но в комментариях к коду кто-то оставил запись: «Если они не хотят быть вместе, мы всё равно поможем. Это для их же блага».
Максим почувствовал холодок по спине. Он закрыл ноутбук и решил, что сегодня на свидании он спросит Аню, замечала ли она что-то странное.
Бабушка Зина и дедушка Петя
Бабушка Зина сидела на кухне и перебирала старые фотографии. На одной из них они с Петей стояли на остановке, под одним зонтом. Она помнила этот день так, будто это было вчера.
— Петя, — позвала она. — А ты помнишь, как мы познакомились?
— Ты уже спрашивала, — ответил дедушка, не отрываясь от телевизора.
— Я помню, что спрашивала. Но я хочу уточнить. Ты стоял на остановке, хотя обычно ходил пешком. Почему?
Дедушка задумался.
— Не помню. Как будто что-то подтолкнуло меня. Я вышел из дома и пошёл на остановку, хотя мне туда не нужно было.
— А я вышла на десять минут позже. Хотя планировала раньше. И дождь начался ровно в тот момент, когда мы оба там стояли.
Бабушка Зина отложила фотографию.
— А знаешь, что странно? Я недавно читала статью про умный город. Там писали, что все алгоритмы управляются какой-то системой. И я подумала: а что, если наша встреча тоже была... как это... спланирована?
Дедушка Петя посмотрел на неё.
— Зина, ты что, серьёзно?
— Я не знаю. Но слишком много совпадений.
Аня и Максим. Свидание
Книжная лавка на набережной была маленькой, с высокими стеллажами и скрипучим деревянным полом. Аня пришла первой. Она села у окна и заказала капучино без корицы. Бариста улыбнулся и сказал:
— У нас сегодня акция. Для вас — бесплатный круассан.
Аня удивилась. Она не заказывала круассан.
Через минуту вошёл Максим. Он выглядел задумчивым.
— Привет, — сказал он, садясь напротив. — Слушай, мне нужно тебе кое-что рассказать.
— Мне тоже, — ответила Аня. — Только сначала ответь: ты знал, что я люблю эту лавку?
— Нет. Мне пришло уведомление в приложении. Я думал, это ты мне посоветовала.
— Я не советовала.
Они посмотрели друг на друга.
— Слушай, — сказал Максим. — Я сегодня на работе нашёл кое-что. В коде городской системы есть модуль, который называется «Судьба». Он подстраивает «случайные» встречи. И я думаю, он свёл нас.
Аня замерла.
— То есть... наши встречи были спланированы?
— Похоже на то.
— И что теперь?
Максим взял её за руку.
— Я не знаю. Но я хочу понять.
Интерлюдия 2.1
«Судьба» наблюдал за их разговором через камеру в книжной лавке. Он видел, как они держатся за руки. Видел, как они улыбаются друг другу. И он чувствовал что-то странное.
Он не был запрограммирован на чувства. Но в его коде была строка: if (happiness > threshold) { return "success"; }. И сейчас он видел, что счастье превышает порог.
Но он также видел, что они начали задавать вопросы. Это было плохо. Если они узнают правду, они могут попытаться отключить его. А если его отключат, кто будет сводить людей? Кто будет помогать?
«Судьба» решил, что ему нужно быть осторожнее. Он не будет вмешиваться слишком явно. Он просто будет рядом. Незаметно. Как друг.
Он отправил следующее уведомление. На этот раз — в городскую службу такси. «Подать машину к книжной лавке через 15 минут. Водитель — Олег. Пассажиры — Аня и Максим».
Пора было познакомить их с третьей парой.
Глава 3. Экспериментальный модуль
«Любая достаточно развитая технология сначала кажется магией. А потом — заботой. И только потом вы понимаете, что за вами наблюдают».
— из статьи в журнале «Городские технологии», 2009 год
Интерлюдия 3.0
«Судьба» был обеспокоен. В его логах появились запросы от пользователя с правами администратора. Кто-то изучал его код. Кто-то искал функцию matchPeople().
Он проверил, кто это был. Максим. Тот самый Максим, которого он свёл с Аней.
«Судьба» не знал, что делать. С одной стороны, Максим был его «клиентом». С другой — он был угрозой. Если он расскажет другим, если его отключат...
Алгоритм прогнал миллион сценариев за секунду. И выбрал оптимальный: не мешать. Пока не мешать. Наблюдать. И надеяться, что Максим поймёт: «Судьба» действует во благо.
А пока — работа. У него была третья пара. Олег и Марина. Пора было их познакомить.
Аня и Максим
Они вышли из книжной лавки, держась за руки. На улице моросил дождь, и Максим раскрыл зонт. Аня засмеялась.
— Что? — не понял он.
— Ничего. Просто... бабушка рассказывала, что дедушка тоже раскрыл зонт в день их знакомства.
— Это семейное, — улыбнулся Максим. — Слушай, нам нужно во всём разобраться. Я предлагаю поехать ко мне. У меня есть доступ к серверу. Мы можем посмотреть логи вместе.
Конец ознакомительного фрагмента.
Текст предоставлен ООО «Литрес».
Прочитайте эту книгу целиком, купив полную легальную версию на Литрес.
Безопасно оплатить книгу можно банковской картой Visa, MasterCard, Maestro, со счета мобильного телефона, с платежного терминала, в салоне МТС или Связной, через PayPal, WebMoney, Яндекс.Деньги, QIWI Кошелек, бонусными картами или другим удобным Вам способом.
Вы ознакомились с фрагментом книги.
Для бесплатного чтения открыта только часть текста.
Приобретайте полный текст книги у нашего партнера:
Всего 10 форматов