Робот должен закрасить клетки, расположенные справа от вертикальной стены и сверху от горизонтальной стены. Представим, что вертикальная стена идет вверх от начала координат, а горизонтальная – вправо от начала координат. Робот находится в позиции (1, 1).
Цикл 1: Закрашивание клеток справа от вертикальной стены.
Мы будем двигаться вправо, пока не упремся в вертикальную стену.
нц пока не стена справа
вправо
если не стена справа то
закрасить
иначе
остаться на месте
конец если
кц
Цикл 2: Закрашивание клеток сверху от горизонтальной стены.
После завершения первого цикла, робот находится либо на клетке, примыкающей к стене справа, либо перед ней. Теперь нужно двигаться вверх, пока не упремся в горизонтальную стену.
нц пока не стена сверху
вверх
если не стена сверху то
закрасить
иначе
остаться на месте
конец если
кц
Примечание:
Эта программа предполагает, что Робот может определить наличие стены в любом направлении. Также, для корректной работы, начальное положение Робота должно быть таким, чтобы он не начал закрашивать клетки, которые не должны быть закрашены.
Если использовать команды `нц-раз-кц`:
нц раз 5 (допустим, что максимальная ширина поля 5 клеток)
вправо
закрасить
кц
нц раз 5 (допустим, что максимальная высота поля 5 клеток)
вверх
закрасить
кц
Это упрощенный вариант, который может закрасить лишние клетки, если размеры поля или расположение стен неизвестны.
Более точный вариант с `нц-пока-кц`:
нц пока не стена справа
вправо
закрасить
кц
нц пока не стена сверху
вверх
закрасить
кц
Ответ:
Программа для Робота:
нц пока не стена справа
вправо
закрасить
кц
нц пока не стена сверху
вверх
закрасить
кц