Есть два автономных робота (представим, что это костюмы Тони Старка). Они улетели в космос и оказались в поясе астероидов. Они могут перемещаться между астероидами. Наша задача — чтобы они встретились на одном астероиде.
Условия
- Костюмы находятся в разных сторонах на огромной полосе астероидов. Можно считать, что она бесконечна.
- Все астероиды одного размера и выстроены в ряд, линейно. С каждого астероида робот может переместиться либо влево, либо вправо.
- Все астероиды покрыты льдом и окрашены в голубой цвет. Исключение — один чёрный астероид. На старте он находится на равном расстоянии между костюмами.
- Запрограммировать можно только два костюма сразу, одной и той же программой. Запрограммировать их по отдельности нельзя.
- Запрещены пустые циклы и обращение к несуществующим строкам.
- Как только два робота оказываются на одном квадрате, программа завершается.
Доступные команды
Программа может состоять из нескольких строк, а в одной строке может быть только одна из следующих команд:
Step to the left — шаг влево на следующий астероид → переключение на следующую строку программы.
Step to the right — шаг вправо на следующий астероид → переключение на следующую строку программы.
If black asteroid — проверить, есть ли под ногами чёрный астероид. Если да — переключиться на следующую строку программы. Если нет — вернуться к предыдущей строке программы.
Teleport N — переключиться на N-ю строку программы.
На команды Step и проверки IF костюмы тратят по 1 секунде. У команды Teleport N мгновенное выполнение.
- Step to the right.
- If black asteroid.
- Teleport 5.
- Teleport End.
- Step to the right.
- Teleport 5.
Рассуждение
Из-за того, что оба робота программируются одной и той же программой, мы можем двигаться только в одну сторону, в этом главная проблема. Каким-то образом нужно создать ситуацию, в которой один робот будет догонять другого.
Выбираем право и ждём, пока один из костюмов не встретит чёрный астероид — это первые две строки программы.
До встречи с чёрным астероидом оба костюма двигались с одинаковой скоростью — они проходили один астероид за две секунды: одну секунду занимала первая команда (Step to the right) и одну секунду — вторая (If black asteroid). Теперь эту скорость сохраняет только один костюм — тот, что не встретил чёрный астероид.
Второй костюм ускоряет движение за счёт команды Teleport 5. Он может за две секунды пройти два астероида — двигается в два раза быстрее первого костюма.
Костюмы двигаются в одну сторону с разной скоростью — это значит, что найдётся конечная точка, где они встретятся и уничтожат друг друга. Финал!