← Все вопросы

Робот КуМир: как обойти стену неизвестной длины и вернуться обратно?

Задан 10 месяцев назад205 просмотров2 ответа
7

Задача: перед Роботом снизу идёт горизонтальная стена неизвестной длины, надо пройти вдоль неё вправо до её конца. Я не знаю длину стены заранее, поэтому нц N раз не подходит. Как написать цикл, чтобы он сам остановился в конце стены?

2 ответа

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

Раз длина неизвестна — это прямой намёк на нц пока с проверкой обстановки. Идея: двигайся вправо, пока снизу есть стена:

нц пока снизу стена
  вправо
кц

Как только Робот доедет до клетки, под которой стены уже нет, условие снизу стена станет ложным и цикл остановится — это и есть конец стены.

Если по условию надо ещё и красить путь:

нц пока снизу стена
  закрасить
  вправо
кц

Главная мысль: когда размер поля/стены заранее не задан, длину «считает» само условие цикла, а не число повторов. Это типовой приём всех заданий 15.1 ОГЭ.

4

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

Ваш ответ

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