Глава 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