Упав с башни, Этика и Хедж
оказываются в потоке чистой энергии.
Эта река течёт от Брэдбарьера до Хаксенбурга.
В этом городе находятся заводы,
производящие роботов, и хранится Модуль памяти —
последний из трёх артефактов, который необходимо найти Этике.
После долгого дня и ещё более долгой ночи
они наконец оказываются в каньоне из бетона и стали.
В самый последний момент
кто-то бросает им верёвку.
Их спасительница, Лемма, ждала их прибытия.
Когда Этика нашла Модуль творения в лесной башне,
радиовещание по всей стране было восстановлено.
Лидер сопротивления Адила незамедлительно оповестила своих союзников,
главной из которых была Лемма:
она блестящий учёный и работает в Хаксенбурге над выводом машин из строя.
К сожалению, роботы тоже уловили эти радиосигналы
и теперь предпринимали оборонительные меры
по защите артефакта в самом центре города.
Единственный способ попасть туда — это через лабиринт расходящихся тропок.
Он представляет собой подземную систему светящихся конвейеров.
Начиная с исходной точки,
каждый отрезок идёт прямо, а затем разветвляется.
Так происходит с каждой веткой, снова и снова.
Этих веток тысячи.
К артефакту ведёт только одна тропа, а все остальные ведут к верной гибели.
К счастью, Модуль творения дал Хеджу удивительную способность:
теперь он может создавать более мелкие копии самого себя.
Каждая копия может делать только две вещи: посылать радиосигнал родителю
и создавать ещё более мелкую копию самого себя,
которая, в свою очередь, может делать то же самое,
и так может создаваться бесконечное количество поколений.
Патруль почти настигает их, поэтому у Этики нет времени.
Какие инструкции ей следует дать Хеджу, чтобы найти нужную тропу?
Приостановите видео, чтобы найти ответ самостоятельно.
Подсказка через: 3
Подсказка через: 2
Подсказка через: 1
В арсенале программистов есть полезный инструмент под названием рекурсия.
Рекурсия — это набор указаний, отсылающих к самим себе.
Это схоже с использованием самогó слова в его определении,
где это не приветствуется, но в нашем случае является очень эффективным.
Рекурсия предполагает повторение, но не такое, как в цикле.
Если в цикле одно действие повторяется снова и снова,
в рекурсии действие начинается и, прежде чем будет завершено, используется снова,
и до завершения этого начинается снова, и так далее.
Это продолжается до тех пор, пока не будет достигнуто конечное состояние.
Затем информация передаётся обратно по уровням
до тех пор, пока не достигнет верха и цикл не будет завершён.
Рекурсия идеально подходит для ситуаций с самоподобием,
где каждая часть подобна целому.
Например, смертельная оборонительная система, уничтожающая всех и каждого,
кто посмеет ступить на неё.
Приостановите видео, чтобы найти ответ самостоятельно.
Ответ через: 3
Ответ через: 2
Ответ через: 1
Эта головоломка на первый взгляд кажется очень сложной,
но для неё есть невероятно простое решение с помощью рекурсии.
Чтобы найти его, давайте сначала взглянем на самую простую версию головоломки:
что, если бы весь лабиринт состоял всего из двух троп?
Если Хедж скопирует себя, копия, которая пойдёт неверным путём, будет уничтожена.
Тогда другая — та, которая доберётся до артефакта, —
пошлёт сигнал о том, по какой тропе она двигалась,
и Хедж его получит.
Это называется базовым случаем рекурсии.
А теперь представьте, что из исходной точки тропа разветвляется дважды
и на каждой развилке копии Хеджа —
назовём их Ветка 1 и Ветка 2 —
создают другие копии, назовём их Лист 1, 2, 3 и 4.
Три Листа будут уничтожены.
Тот, который достигнет артефакта, отправит правильный ответ
только своему родителю.
Поэтому если Ветка 1 или 2 ждёт на развилке
и получает радиосигнал,
то это верный путь к артефакту из его местоположения.
Чтобы дать Хеджу верный маршрут из того места, где находится он,
Ветка должна сказать, каким путём она шла,
а также то, что она получила по радио.
Этот процесс будет эффективным вне зависимости от того,
сколько разветвлений придётся пройти.
Каждый ответ, который копия получает по радиосвязи,
описывает путь к пункту управления из того места, где она находится,
и добавив к этому ту тропу, по которой шла она сама,
она может указать путь своему родителю.
Мы можем суммировать все указания в действии под названием «Навигатор»,
которое будет выполнять каждая копия Хеджа:
1. По достижении артефакта
сообщи по радиосвязи своему родителю, двигалась ли ты по левой или правой тропе.
2. Когда окажешься на развилке, сойди с конвейера
и отправь новые копии по левой и правой тропе.
Дай им задание «Навигатор».
Это и есть рекурсия,
и повторений может быть много, прежде чем будет запущено последнее указание:
3. Если ты услышишь что-то по радио, сообщи своему родителю,
двигалась ли ты по левой или правой тропе,
а затем повтори то, что услышала по радио.
«Навигатор» — это пример того, что программисты называют функциями,
подпрограммами или процедурами.
Вне зависимости от используемого термина, идея остаётся неизменной —
набору указаний даётся ярлык, чтобы его можно было легко использовать повторно —
возможно, даже сам по себе.
Это идеально подходит для нашего случая —
всю сеть троп можно проследить с помощью всего трёх указаний.
Происходит следующее.
Когда патруль выворачивает из-за угла, Этика и Лемма надевают самодельные маски.
Они сбивают роботов с толку, чтобы дать Хеджу немного времени.
Наконец, после некоторых помех, по радио Хеджа слышится ряд указаний.
Трое друзей прыгают на конвейер и удаляются,
а по пятам за ними мчится отряд роботов.