На бесконечном поле имеются две одинаковые вертикальные стены и одна горизонтальная, соединяющая нижние концы стен. Длины стен неизвестны. Робот находится в одной из клеток, расположенных между верхними краями вертикальных стен. На рисунке указан один из возможных расположения стен и Робота (Робот обозначен буквой «Р»).
Напишите для Робота алгоритм, закрашивающий все клетки, расположенные ниже горизонтальной стены непосредственно под ней. Робот должен закрасить только клетки, удовлетворяющие данному условию. Например, для приведённого выше рисунка Робот должен закрасить следующие клетки (см. рисунок).
Конечное расположение Робота может быть произвольным. Алгоритм должен решать задачу для произвольного размера поля и любого допустимого расположения стен внутри прямоугольного поля. При исполнении алгоритма Робот не должен разрушиться, выполнение алгоритма должно завершиться.
Алгоритм может быть выполнен в среде формального исполнителя или записан в текстовом редакторе.
Сохраните алгоритм в формате программы Кумир или в текстовом файле.
Шаг 2: Робот движется вниз, пока не достигнет горизонтальной стены.
Шаг 3: Робот начинает закрашивать клетки, расположенные непосредственно под горизонтальной стеной. Для этого он может использовать команду "Закрасить" или "Покрасить".
Шаг 4: Когда Робот закончил закрашивание всех нужных клеток, он должен вернуться в исходную позицию.
Шаг 5: Робот двигается вверх, пока не достигнет клеток между верхними краями вертикальных стен и завершает свою работу.
Обоснование:
Шаг 2: Робот двигается вниз до тех пор, пока не достигнет горизонтальной стены, потому что мы хотим закрасить только те клетки, которые находятся непосредственно под горизонтальной стеной.
Шаг 3: Робот начинает закрашивать клетки, расположенные ниже горизонтальной стены непосредственно под ней, потому что это условие задачи.
Шаг 4: Робот возвращается в исходную позицию, чтобы завершить свою работу и не выходить за пределы поля.
Шаг 5: Робот двигается вверх до тех пор, пока не достигнет клеток, расположенных между верхними краями вертикальных стен, чтобы завершить свою работу и выйти из поля.
Алгоритм на языке Кумир:
```
Алгоритм ЗакрашиваниеКлеток()
Повторять пока Робот Перемещение.ВнизВозможно()
Робот Перемещение.Вниз()
Конец пока
Повторять пока Робот Сенсор.Верх()
Робот Закрасить()
Робот Перемещение.Вверх()
Конец пока
Конец алгоритма
```
В данном алгоритме используются функции Перемещение.Вниз() и Перемещение.Вверх(), которые помогают Роботу двигаться вниз и вверх на одну клетку соответственно, а также функция Закрасить(), которая позволяет Роботу закрашивать клетку, на которой он находится.
Вы можете сохранить этот алгоритм в формате программы Кумир или в текстовом файле для его дальнейшего исполнения в среде Кумир или в другой среде программирования.