Вопрос:

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

Ответ:

Алгоритм для Робота:

  1. Двигаться вперед, пока перед роботом стена.
  2. Повернуть направо.
  3. Двигаться вперед, пока перед роботом стена.
  4. Повернуть направо.
  5. Двигаться вперед, пока перед роботом стена.
  6. Повернуть направо.
  7. Двигаться вперед, пока перед роботом стена.
  8. Повернуть направо.
  9. Закрасить клетку.
  10. Повторять шаги 1-5, пока робот не вернется в начальную позицию, или пока не будут закрашены все нужные клетки.
  11. Двигаться вперед (для произвольного конечного расположения).

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

Подать жалобу Правообладателю