Вопрос:

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

Ответ:

Решение:

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

  1. Клетки, находящиеся непосредственно под горизонтальной стеной и примыкающие к проходу в ней.
  2. Клетки, находящиеся непосредственно слева от вертикальной стены и примыкающие к проходу в ней.

Алгоритм должен быть универсальным, то есть работать для любого допустимого расположения стен и размеров проходов. Робот не должен разрушиться и должен завершить работу.

Предлагаемый алгоритм:

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

Важно: Алгоритм должен предусматривать обработку граничных случаев, например, когда проходы находятся в самом начале или конце стены, или когда проход имеет ширину в одну клетку.

Пример выполнения алгоритма для данной конфигурации:

Робот начинает под горизонтальной стеной. Движется вправо, находит проход. Закрашивает клетки под стеной до прохода.

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

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

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