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


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