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


Решение по шагам
5 шаговРобот находится над третьим, горизонтальным отрезком. Чтобы попасть к его левому концу, он движется влево, пока слева есть свободная клетка и снизу находится стена.
В клетке слева от третьего отрезка проход вниз свободен, поэтому Робот спускается на ряд клеток, расположенных под стеной.
Робот движется вправо по свободным клеткам до первой клетки, над которой находится стена.
В каждой клетке под третьим отрезком Робот выполняет команду «закрасить», затем переходит вправо. Цикл завершается, когда сверху становится свободно, то есть горизонтальный отрезок заканчивается.
Подходящий алгоритм:
$$нц пока (слева свободно) и (не снизу свободно)\n влево\nкц\nвниз\nнц пока сверху свободно\n вправо\nкц\nнц пока не сверху свободно\n закрасить\n вправо\nкц$$нц пока (слева свободно) и (не снизу свободно)
влево
кц
вниз
нц пока сверху свободно
вправо
кц
нц пока не сверху свободно
закрасить
вправо
кц
Этот ответ получен в разборе, но не сверен с официальным ключом из банка — проверьте выкладки, прежде чем заучивать результат.
Где здесь ошибаются
Двигаться влево только по условию «слева свободно», не проверяя наличие стены снизу.
Начать закрашивание в клетке слева от третьего отрезка.
Продолжать закрашивание после окончания третьего отрезка.
Использовать команду «вниз» в клетке, где снизу находится стена.