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