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


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