Ниже простое и понятное решение для средней школы. Задача: corridor из 5 клеток слева направо. Робот начинается в левой клетке (1) и должен покрасить все клетки, в которых есть проход вверх, вниз или оба направления. Нужно остановиться в крайней правой клетке (5).
Идея: пройти по коридору слева направо, проверять каждую клетку на наличие вертикального прохода и красить её только если такой проход есть. Так мы гарантированно покрасим все нужные клетки и при этом не выйдем за пределы правой клетки.
Пошаговый алгоритм
- Текущее положение: клетка 1.
- Для каждой клетки i от 1 до 5:
- Если в клетке i есть проход вверх или вниз (или оба), покраси эту клетку.
- Если i < 5, перейди вправо в клетку i+1.
- Если i = 5, остановись.
Ключевые моменты
- Robot посещает каждую клетку ровно один раз, поэтому точно покрасит все клетки с вертикальными проходами.
- По окончании он находится в крайней правой клетке (5), как и требуется.
Пример с гипотетическим набором проходов
- Пусть в клетках 2 и 4 есть вертикальные проходы, а в остальных — нет.
- Шаги: в клетке 1 — нет вертикального прохода, не красим; идём в 2; в 2 — есть проходы, красим; идём в 3; в 3 — нет прохода, не красим; идём в 4; в 4 — есть проход, красим; идём в 5; в 5 — нет прохода, не красим; остановимся в клетке 5.
- Результат: покрашены клетки 2 и 4, как и требуется.
Если известно расположение вертикальных проходов заранее, можно ещё проще: просто покрасить только те клетки, которые имеют проход, но логика выше остаётся корректной и универсальной для любой конфигурации в заданном диапазоне 5 клеток.