Вопрос:

Напишите для Робота алгоритм, закрашивающий все клетки, расположенные между левой и правой стенами от клетки, расположенной непосредственно справа от левой стены у её верхнего конца, до клетки, расположенной непосредственно слева у правой стены у её верхнего конца. А также клетку, расположенную непосредственно слева от правой стены у её нижнего конца. Робот должен закрасить только клетки, удовлетворяющие данному условию. Например, для приведённого выше рисунка Робот должен закрасить следующие клетки (см. рисунок).

Ответ:

Решение:

Чтобы закрасить клетки между стенами, роботу нужно двигаться вдоль стен. Для этого можно использовать цикл «пока».

Алгоритм будет следующим:

  1. Подняться до верхнего конца левой стены:
    нц пока сверху свободно
    вверх
    кц
  2. Двигаться вправо, закрашивая клетки до правой стены:
    нц пока справа свободно
    вправо
    закрасить
    кц
  3. Опуститься до нижнего конца правой стены, закрашивая последнюю клетку:
    вправо
    закрасить

Итоговый алгоритм:

нц пока сверху свободно
  вверх
кц

нц пока справа свободно
  вправо
  закрасить
кц

вправо
закрасить

Примечание: Этот алгоритм предполагает, что робот начинает в клетке непосредственно справа от левой стены у её нижнего конца, как показано на рисунке. Если начальная позиция другая, алгоритм может потребовать корректировки.