Робот КуМир: как обойти стену неизвестной длины и вернуться обратно?
Задача: перед Роботом снизу идёт горизонтальная стена неизвестной длины, надо пройти вдоль неё вправо до её конца. Я не знаю длину стены заранее, поэтому нц N раз не подходит. Как написать цикл, чтобы он сам остановился в конце стены?
2 ответа
Раз длина неизвестна — это прямой намёк на нц пока с проверкой обстановки. Идея: двигайся вправо, пока снизу есть стена:
нц пока снизу стена
вправо
кц
Как только Робот доедет до клетки, под которой стены уже нет, условие снизу стена станет ложным и цикл остановится — это и есть конец стены.
Если по условию надо ещё и красить путь:
нц пока снизу стена
закрасить
вправо
кц
Главная мысль: когда размер поля/стены заранее не задан, длину «считает» само условие цикла, а не число повторов. Это типовой приём всех заданий 15.1 ОГЭ.
Осторожно с краем: если стена доходит до самого правого края поля, после цикла Робот может упереться в границу. На всякий случай в реальной задаче проверяй ещё справа свободно, чтобы не было попытки шагнуть в стену (в КуМире это даёт отказ). Например: нц пока снизу стена и справа свободно.