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


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