На бесконечном поле имеется вертикальная стена. Длина стены неизвестна. От верхнего конца стены вправо отходит горизонтальная стена также неизвестной длины. Робот находится в клетке, расположенной слева от нижнего края вертикальной стены.
На рисунке указан один из возможных расположения стен и Робота (Робот обозначен буквой «Р»).
Напишите для Робота алгоритм, закрашивающий все клетки, расположенные левее вертикальной стены и выше горизонтальной стены и прилегающие к ним. Робот должен закрасить только клетки, удовлетворяющие данному условию. Например, для приведённого выше рисунка Робот должен закрасить следующие клетки (см. рисунок).
Конечное расположение Робота может быть произвольным. Алгоритм должен решать задачу для произвольного размера поля и любого допустимого расположения стен внутри прямоугольного поля. При исполнении алгоритма Робот не должен разрушиться.
Предполагается, что ответ будет написан на языке Кумир.
использовать Робот
алг
нач
• нц пока справа стена
• • закрасить
• • вверх
• кц
• нц пока снизу свободно
• • закрасить
• • вправо
• кц
• нц пока снизу стена
• • закрасить
• • вправо
• кц
кон
Объяснение:
Используем исполнитель Робот в среде Кумир. Вставка -> использовать Робот
Создаём стены и меняем положение Робота через Робот -> Редактировать обстановку
Закончив с обстановкой, начинаем писать код.
нц = начало цикла, кц = конец цикла
• нц пока справа стена
• • закрасить
• • вверх
• кц
Этот цикл выполняет действия внутри себя только тогда, когда справа от робота находится стена.
• нц пока снизу свободно
• • закрасить
• • вправо
• кц
Этот цикл выполняет действия внутри себя только тогда, когда снизу робота нет стены.
• нц пока снизу стена
• • закрасить
• • вправо
• кц
Этот цикл выполняет действия внутри себя только тогда, когда снизу робота стена.
На выходе получаем универсальный алгоритм, который будет работать с абсолютно любой длиной стены.