Решение: Алгоритм для Робота
Исполнитель Робот перемещается по бесконечному полю, разбитому на клетки. Между соседними клетками могут находиться стены. Робот умеет выполнять команды «вверх», «вниз», «влево», «вправо», «закрасить», а также проверять условия «сверху свободно», «снизу свободно», «слева свободно», «справа свободно» и использовать условные операторы и циклы «пока».
На поле имеются две вертикальные стены и одна горизонтальная, соединяющая нижний конец правой и верхний конец левой вертикальных стен. Длины стен неизвестны. Робот находится в клетке, расположенной слева от верхнего края правой вертикальной стены, рядом со стеной.
Напишите алгоритм, закрашивающий все клетки, примыкающие к вертикальным стенам справа. Робот должен закрасить только клетки, удовлетворяющие этому условию. Алгоритм должен работать для произвольного размера и любого допустимого расположения стен, не приводить к разрушению Робота и завершаться.


Решение по шагам
4 шагаПоднимемся выше верхнего конца правой вертикальной стены, чтобы обойти её сверху.
Перейдём вправо и будем двигаться вниз вдоль правой стороны правой вертикальной стены. Закрашиваем клетку перед каждым шагом вниз, пока слева находится стена.
После выхода за нижний конец стены поднимемся на одну клетку и пройдём влево по клеткам над горизонтальной стеной до правой стороны левой вертикальной стены.
Двигаясь вниз вдоль левой вертикальной стены, закрашиваем все клетки, у которых слева находится стена.
нц пока сверху свободно
вверх
кц
вправо
нц пока не слева свободно
закрасить
вниз
кц
вверх
нц пока слева свободно
влево
кц
нц пока не слева свободно
закрасить
вниз
кц
Этот ответ получен в разборе, но не сверен с официальным ключом из банка — проверьте выкладки, прежде чем заучивать результат.
Где здесь ошибаются
Попытка пройти сквозь вертикальную стену.
Закрашивание клеток, не примыкающих к стенам справа.
Отсутствие подъёма над правой стеной перед переходом вправо.
Использование фиксированного числа повторений вместо циклов.