Вопрос:

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

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

Ответ:

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

  1. Вниз до стены: Двигаться вниз, пока не упремся в стену.
  2. Вправо: Сделать шаг вправо (встать в первую клетку слева от вертикальной стены).
  3. Цикл «Вверх вдоль стены»:
    • Вверх: Двигаться вверх.
    • Проверка на проход: Если впереди свободно (нет стены), то двигаться вверх, пока не появится стена, продолжая движение вверх.
    • Закрасить: Закрасить текущую клетку.
    • Конец стены?: Если достигнут конец стены, завершить цикл.
  4. Влево под стеной: Перейти к закрашиванию клеток под горизонтальной стеной.
  5. Влево: Двигаться влево.
  6. Цикл «Влево вдоль стены»:
    • Влево: Двигаться влево.
    • Проверка на проход: Если впереди свободно (нет стены), то двигаться влево, пока не появится стена, продолжая движение влево.
    • Закрасить: Закрасить текущую клетку.
    • Конец стены?: Если достигнут конец стены, завершить цикл.
  7. Завершение: Алгоритм завершен.

Пояснения:

  • Алгоритм предполагает, что Робот начинает работу непосредственно слева от нижнего конца вертикальной стены.
  • Проходы определяются как свободное пространство перед Роботом при движении вдоль стены.
  • Робот продолжает движение вдоль стены и закрашивает клетки до тех пор, пока не достигнет конца стены.
ГДЗ по фото 📸
Подать жалобу Правообладателю