Том 1 Глава 100Глава 100

Глава 100: Участник №101 сдал работу досрочно?! Если академик Чжань Юншу был искренне удивлён, то сам Хао Юнь, решая эту задачу, особо не заморачивался. Вся идея пришла к нему в голову в момент, когда он просто почесал затылок — чистая импровизация. Он взял за основу алгоритм, который сначала угадывает приближённое значение 1/√x, а затем уточняет его через итерации по методу Ньютона. С точки зрения логики, новая версия функции, которую он переписал, почти не отличалась от исходной Q_Sqrt, использовавшейся в math.c файле “Ледникового движка”. Обе функции работали по одному и тому же принципу. Но была одна тонкая разница — в том самом таинственном числе: 0x5f375a86. Согласно методу Ньютона, чем ближе начальное приближение к реальному значению, тем меньше нужно итераций. И вот это магическое число 0x5f375a86 как раз и служит для расчёта начального приближения. Хао Юнь случайно обнаружил, что если использовать именно это значение, то результат получается настолько близким к 1/√n, что метод Ньютона требует всего две итерации, чтобы достичь нужной точности! А как это число вообще получилось? Хао Юнь и сам понятия не имел. Он просто доверился интуиции: показалось, что число, использованное в оригинальной версии, не самое удачное, и он решил подставить другое, “наглаз” лучшее. Сначала он попробовал несколько разных значений — и все работали хуже. Но потом, почти случайно, наткнулся на 0x5f375a86, и — о чудо! — всего две итерации, и готово! Честно говоря, он сам был в шоке. Возможно, это связано с тем, что его характеристика “Математика” уже достигла уровня “мастерства”? Так или иначе, после использования этого особенного числа, по количеству операций функция работала в два раза быстрее, чем исходная Q_Sqrt из math.c. А насколько это повлияет на работу всего движка?.. Хао Юнь не знал. Он не был экспертом в “Ледниковом движке”. Хотя он и занимался разработкой игр, в его “арсенале” была только 2048, а проект вроде “Temple Run”, созданный на движке, похожем на “Ледниковый”, делал в основном Ли Цзунчжэн — сам Хао Юнь туда почти не лез. Да и вообще, в этом мире инструменты для создания игр стали настолько “глупо-дружелюбными”, что большинство игр среднего и малого масштаба можно создать, имея простой движок и уровень программирования второго курса. — …Только вот как мне протестировать, насколько повысилась эффективность движка?— пробормотал он. — На этом компе даже нет ни одного тестера или игры для замеров? Он облазил всю систему — никаких программ для оценки производительности движка, ни даже тестовой игры. И в самом деле — организаторы не собирались включать такой инструмент. Потому что в глубине души они были уверены: никто и близко не сможет выполнить это “задание-смертник”. — Чёрт, это вообще что за издевательство?!— воскликнул Хао Юнь, уставившись в пустой экран, потом с горькой усмешкой пожал плечами. Создавать игру с нуля только ради замеров? В теории — можно. Но — нет доступа к интернету, нет ассетов, и времени толком нет. С нуля писать движок и игру ради теста?.. Забей. Раз уж лучшего способа оптимизации нет, Хао Юнь вздохнул, и нажал кнопку “Сдать” в конкурсной программе. Он убрал руки с клавиатуры. На выполнение заданий давалось три дня, без минимального времени сдачи — можно было сдать в любой момент. Обычно участники сдавали ближе к обеду, чтобы потом с друзьями вместе выйти поесть. Хао Юнь тоже так планировал. Но в его кабине не было вообще ничего, и сидеть без дела три часа он не мог. Так что он встал и вышел. На выходе из зала стоял тот же охранник, что и утром. Они переглянулись. — В туалет? — спросил охранник, — Ты не в ту сторону пошёл. — Нет, — ответил Хао Юнь, — я уже закончил. — Закончил?.. Серьёзно? — Ага. — Он кивнул, показал в сторону выхода из спортзала. — Можно выйти? Охранник, наконец, вышел из ступора, и открыл проход. Два года назад он тоже охранял финал Кубка Надежды здесь, в Шядунском педагогическом университете. И, если он правильно помнил, первый сдавший тогда участник вышел только в пять вечера. Сейчас же с момента начала экзамена не прошло и часа… Что за… неужели он сдал пустой файл? Но это же финалист, прошедший отбор из десятков тысяч работ! Не может же он сдать пустую работу?.. На самом деле, в шоке были не только охранники. Члены жюри в закулисье были в куда большем замешательстве. Особенно профессор Чжан Цунхао. После того как он прочитал переписанную Хао Юнем функцию, его лицо стало… неверующим. Он взял черновик, перепроверил все формулы вручную, и в конце концов не выдержал: — Чёрт возьми!.. Откуда он взял это число?! Это же… просто невозможно! Одна единственная правка — начального значения и вдруг — в два раза выше скорость выполнения функции?! Рядом с ним Фэн Чжэнцин, менеджер софт-отдела корпорации “Лунвэй”, потянул его за рукав и прошептал: — Если встроить это в движок, насколько он станет быстрее? — Минимум процентов на двадцать, — ответил профессор. — В 3D-движках вычисление обратного квадратного корня используется очень часто. — Двадцать?! — Фэн потрясён. Он был не программист, и не знал, что такое метод Ньютона, но понимал, что это уже за гранью фантастики. “Ледниковый движок”, хоть и не ключевой продукт “Лунвэй”, разрабатывался лучшими из лучших. И никто из них не нашёл этого способа. А тут — школьник?! Да быть такого не может! Профессор Чжан снова и снова смотрел на формулы, и чувствовал, что это уже выходит за пределы его знаний. Рядом стоял старый профессор из Национального университета обороны. Он долго молчал, а затем выдохнул: — Невероятно… Он нашёл прорыв там, где его не должно было быть. Я всегда считал, что функции в math.c уже идеальны, что они — как арифметика: плюс, минус, умножить. И вот — оказывается, что можно ещё лучше. — Этот парень — гений! А профессор Чжан стоял в раздумьях. Он наконец поднял глаза на своего учителя, академика Чжан Юншу. — Простите, но… Такой ответ — это вообще считается решением? Академик взглянул на него. — Ты всё ещё сомневаешься? — Не то чтобы сомневаюсь… просто… это как-то… обидно. Он ведь даже не переписал код по сути! Это же чистая математика! Да! Это не программирование — это математика! Он лишь изменил число, и, совершенно случайно, ускорил одну из базовых функций движка в два раза?! Но почему именно это число?.. Профессор Чжан уже сходил с ума, но так и не понял. Академик Чжань вдруг улыбнулся. — Ну а кто тебе сказал, что это не математика? Он тоже не знал, откуда взялось это число. Ни малейшей идеи. Интуиция? Бывает и такое. Многие математические константы поначалу были найдены “по наитию”, и только десятилетия или даже века спустя была доказана их точность. Глядя на уходящего из зала участника, академик тихо подумал: Возможно… вот он — настоящий гений.
Обновлено: 21.01.2026

Комментарии к главе

Загрузка комментариев...