Нужно написать программу для Робота на клетчатом поле со стенами: он должен закрасить указанные клетки, причём длина стен и места проходов заранее неизвестны. Часть 2, высокий уровень, выполняется на компьютере в учебной среде вроде Кумира или в текстовом файле, до 2 баллов.
Часть
2
Ответ
файл с алгоритмом: программа учебной среды Кумир или текстовый файл
Баллы
до 2 баллов
Проверяет
умение составить и выполнить программу для заданного исполнителя — Робота на клетчатом поле
Клетки вдоль стены — Робот идёт вдоль стены неизвестной длины и закрашивает клетки рядом с ней.
Стена с проходом — В стене проход в неизвестном месте, и клетку напротив него нужно обработать отдельно.
Угол, коридор, лестница — Несколько участков подряд: закончив одну стену, Робот поворачивает и продолжает вдоль следующей.
Пример с полным разбором
Условие. Робот ходит на одну клетку вверх, вниз, влево или вправо, закрашивает клетку, в которой стоит, и проверяет, свободно ли рядом с ним в каждую сторону. Над Роботом тянется вправо горизонтальная стена неизвестной длины; Робот стоит в клетке под её левым краем, других стен на поле нет. Напишите алгоритм, который закрашивает все клетки прямо под стеной. На рисунке — один из возможных случаев, нужные клетки закрашены.
Длина стены заранее неизвестна, поэтому число шагов задать нельзя — нужен цикл «нц пока условие … кц», который повторяет команды, пока условие выполняется.
Условие цикла — «не сверху свободно»: пока над Роботом стена, клетку нужно закрасить.
В теле цикла две команды: «закрасить» и «вправо».
Когда стена кончится, сверху станет свободно и цикл остановится. Справа стен нет, поэтому Робот не разобьётся.
Перед сдачей программу запускают на поле с другой длиной стены: она должна работать при любой.
2 балла — алгоритм правильно работает при всех допустимых вариантах поля. 1 балл — Робот не разбился, программа завершилась, лишних закрашенных клеток не больше 10 и незакрашенных нужных тоже не больше 10. В остальных случаях — 0.
Обязательно ли работать в Кумире?
Нет. Спецификация рекомендует учебную среду исполнителя «Робот», например Кумир, а если её нет, алгоритм записывают в простом текстовом редакторе и сохраняют в формате .txt.
Можно ли записывать команды не так, как в условии?
Можно: по критериям допускается привычный синтаксис, например «справа стена» вместо «не справа свободно», и отдельные синтаксические ошибки, которые не искажают замысел.