На бесконечном поле имеются две одинаковые горизонтальные параллельные стены, расположенные друг под другом и отстоящие друг от друга более чем на 1 клетку. Левые края стен находятся на одном уровне. Длины стен неизвестны. Робот находится в клетке, расположенной непосредственно под верхней стеной.На рисунке указан один из возможных расположения стен и Робота (Робот обозначен буквой «Р»). Напишите для Робота алгоритм, закрашивающий все клетки, расположенные ниже горизонтальных стен. Робот должен закрасить только клетки, удовлетворяющие данному условию. Например, для приведённого выше рисунка Робот должен закрасить следующие клетки (см. рисунок).
Конечное расположение Робота может быть произвольным. Алгоритм должен решать задачу для произвольного размера поля и любого допустимого расположения стен внутри прямоугольного поля. При исполнении алгоритма Робот не должен разрушиться. Алгоритм может быть выполнен в среде формального исполнителя или записан в текстовом редакторе. Сохраните алгоритм в текстовом файле.
1. Робот начинает движение вниз.
2. Пока Робот не достигнет нижней границы поля:
2.1. Если стена находится перед Роботом:
2.1.1. Робот останавливается и начинает движение вправо.
2.1.2. Робот продолжает двигаться вправо до тех пор, пока не встретит перекресток или другую стену.
2.1.3. Робот поворачивает направо и продолжает движение вниз.
2.2. Если перед Роботом нет стены:
2.2.1. Робот продолжает движение вниз.
3. Когда Робот достигнет нижней границы поля, он останавливается.
4. Робот завершил свою работу - все клетки ниже горизонтальных стен закрашены.
Обоснование:
Алгоритм использует систему проверок на наличие стены перед Роботом, чтобы определить, должен ли он изменить направление движения или продолжить движение вниз. Если стена обнаружена, Робот изменяет свою траекторию, двигаясь вправо до тех пор, пока не встретит перекресток или другую стену, а затем продолжает двигаться вниз. Если стены нет, Робот продолжает движение вниз.
Шаги алгоритма повторяются до тех пор, пока Робот не достигнет нижней границы поля, после чего он останавливается, так как все клетки, которые удовлетворяют заданному условию (находятся ниже горизонтальных стен), уже закрашены.
Такой алгоритм позволяет Роботу справиться с задачей независимо от размеров поля и расположения стен внутри поля.