Вопрос:

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

Смотреть решения всех заданий с листа

Ответ:

Для решения этой задачи нам понадобится алгоритм для Робота, который сможет перемещаться по полю, определять наличие стен и закрашивать клетки. Предположим, что у Робота есть команды:

  • вправо - перемещает Робота на одну клетку вправо.
  • влево - перемещает Робота на одну клетку влево.
  • вверх - перемещает Робота на одну клетку вверх.
  • вниз - перемещает Робота на одну клетку вниз.
  • стена_справа - возвращает истину, если справа стена, иначе ложь.
  • стена_слева - возвращает истину, если слева стена, иначе ложь.
  • стена_снизу - возвращает истину, если снизу стена, иначе ложь.
  • стена_сверху - возвращает истину, если сверху стена, иначе ложь.
  • закрасить - закрашивает текущую клетку.

Алгоритм:

  1. Закрасить текущую клетку (начальное положение).
  2. Двигаться вправо, пока не встретится стена. На каждом шаге закрашивать клетку.
  3. Двигаться вниз на одну клетку.
  4. Пока не встретится стена снизу, выполнять:
    • Двигаться влево, пока не встретится стена. На каждом шаге закрашивать клетку.
    • Двигаться вниз на одну клетку.
    • Двигаться вправо, пока не встретится стена. На каждом шаге закрашивать клетку.
    • Двигаться вниз на одну клетку.

Текст алгоритма:


закрасить
пока не стена_справа:
    вправо
    закрасить
вниз
пока не стена_снизу:
    пока не стена_слева:
        влево
        закрасить
    вниз
    пока не стена_справа:
        вправо
        закрасить
    вниз

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

ГДЗ по фото 📸
Подать жалобу Правообладателю