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


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