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