export
YourLeague
ЕГЭОГЭ
Информатика
ИнформатикаИстория
ТеорияЗаданияГотовые вариантыОб экзаменеСоревнованиеКурсы
Войти
ЕГЭОГЭ
ИнформатикаИстория
ТеорияЗаданияГотовые вариантыОб экзаменеСоревнованиеКурсыВойти
YourLeagueПодготовка к экзаменам в одном месте
ИнструкцииСоглашениеПерсональные данныеОфертаКонтакты
15

№624485252

Автор: YourLeague

Исполнитель Робот умеет перемещаться по лабиринту, начерченному на плоскости, разбитой на клетки. Между соседними (по сторонам) клетками может стоять стена, через которую Робот пройти не может.

У Робота есть девять команд. Четыре команды - это команды-приказы: вверх, вниз, влево, вправо. При выполнении любой из этих команд Робот перемещается на одну клетку соответственно: вверх ↑, вниз ↓, влево ←, вправо →. Если Робот получит команду передвижения сквозь стену, то он разрушится. Также у Робота есть команда закрасить, при которой закрашивается клетка, в которой Робот находится в настоящий момент.

Ещё четыре команды - это команды проверки условий. Эти команды проверяют, свободен ли путь для Робота в каждом из четырёх возможных направлений: сверху свободно, снизу свободно, слева свободно, справа свободно. Эти команды можно использовать вместе с условием «если», имеющим следующий вид:

если условие то
  последовательность команд
все

Например, для передвижения на одну клетку вправо, если справа нет стенки, и закрашивания клетки:

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

В одном условии можно использовать несколько команд проверки условий, применяя логические связки и, или, не, например:

если (справа свободно) и (не снизу свободно) то
  вправо
все

Для повторения последовательности команд можно использовать цикл «пока», имеющий следующий вид:

нц пока условие
  последовательность команд
кц

Например, для движения вправо, пока это возможно:

нц пока справа свободно
  вправо
кц

На бесконечном поле имеется горизонтальная стена. Длина стены неизвестна. От правого конца стены вниз отходит вертикальная стена также неизвестной длины. Робот находится над горизонтальной стеной в клетке, расположенной у её левого края.

На рисунке указан один из возможных способов расположения стен и Робота (Робот обозначен буквой «Р»):

Поле Робота

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

Клетки, которые нужно закрасить

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

Напишите алгоритм на языке Кумир в окне «Кумир» (кнопка на панели задания). «Выполнить» - Робот выполнит алгоритм на поле с рисунка, «Проверить решение» - на нескольких полях разного размера.

Ответ в этом задании - алгоритм для Робота на языке Кумир. Напишите его в окне «Кумир»: «Выполнить» покажет, как Робот проходит поле с рисунка, а «Проверить решение» запустит алгоритм на нескольких полях разного размера и объяснит каждую ошибку.