Вопрос:

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

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

Ответ:

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

Предположим, что у нас есть команды для Робота:

  • вверх - перемещение на одну клетку вверх
  • вниз - перемещение на одну клетку вниз
  • влево - перемещение на одну клетку влево
  • вправо - перемещение на одну клетку вправо
  • закрасить - закрасить текущую клетку
  • стена_справа - условие: справа стена?
  • стена_слева - условие: слева стена?
  • стена_сверху - условие: сверху стена?
  • стена_снизу - условие: снизу стена?

Тогда алгоритм может выглядеть следующим образом:

  1. Двигаемся вправо, пока не упремся в стену справа.
  2. Двигаемся вверх.
  3. Закрашиваем клетку.
  4. Двигаемся влево, пока не упремся в стену слева.
  5. Двигаемся вверх.
  6. Закрашиваем клетку.

Пример алгоритма в псевдокоде:


ПОКА не стена_справа ДЕЛАТЬ
 вправо
КОНЕЦ ПОКА
вверх
закрасить
ПОКА не стена_слева ДЕЛАТЬ
 влево
КОНЕЦ ПОКА
вверх
закрасить

Важно: Этот алгоритм предполагает, что Робот начинает движение с нижней линии сетки.

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