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


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