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

№787092834

Автор: YourLeague

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Поле Робота

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

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

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

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

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