← Все вопросы

Робот КуМир: как закрасить клетки только там, где сверху стена, двигаясь по коридору?

Задан 31 месяц назад1.1к просмотров2 ответа
6

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

2 ответа

11
✓ Принятый ответ — помог автору

Здесь нужны цикл и условие вместе: цикл ведёт Робота вправо, а внутри если решает, красить ли текущую клетку.

нц пока справа свободно
  если сверху стена
    то
      закрасить
  все
  вправо
кц
если сверху стена
  то
    закрасить
все

Логика: на каждом шаге смотрим — есть ли сверху стена. Если да — красим, если нет — пропускаем. Потом шагаем вправо.

Обрати внимание на блок если ... то ... все после цикла: это докрашивает последнюю клетку у правой стены (по той же причине, что цикл пока справа свободно не доходит до самой крайней клетки). Если по условию красить надо включая последнюю — этот хвост обязателен.

4

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

Ваш ответ

Войдите, чтобы ответить на вопрос.