Подготовка к школе
1 класс
2 класс
3 класс
4 класс
5 класс
6 класс
7 класс
8 класс
9 класс
10 класс
11 класс
ОГЭ
ЕГЭ
Для всех
Назад

15. Исполнитель алгоритма: все задания

Сообщить о проблеме
1. Задание #296172
Задание было решено верно
Задание было решено неверно

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

У Робота есть девять команд. Четыре команды – это команды-приказы:
вверх вниз влево вправо

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

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

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

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

Здесь условие – одна из команд проверки условия.
Последовательность команд – это одна или несколько любых команд-приказов.

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

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

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

Например, для движения вправо, пока это возможно, можно использовать следующий алгоритм:
нц пока справа свободно
вправо
кц

На бесконечном поле имеются четыре стены, соединённые между собой, которые образуют прямоугольник. Длины стен неизвестны. В левой вертикальной стене есть ровно один проход. Проход не может примыкать к углу прямоугольника. Точное место прохода и ширина прохода неизвестна. Робот находится около нижнего конца левой вертикальной стены, снаружи прямоугольника и выше нижней стены. На рисунке 1 указан один из возможных способов расположения стен и Робота (Робот обозначен буквой «Р»).

Напишите для Робота алгоритм, закрашивающий все клетки, расположенные вдоль стен прямоугольника с внешней стороны и угловые клетки. Проход должен остаться незакрашенным. Робот должен закрасить только клетки, удовлетворяющие данному условию. Например, для рисунка 1 Робот должен закрасить следующие клетки (см. рисунок 2).

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

Алгоритм может быть выполнен в среде формального исполнителя или записан в текстовом редакторе.

Сохраните алгоритм в формате программы Кумир или в текстовом файле. Название файла и каталог для сохранения Вам сообщат организаторы экзамена.

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

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

Алгоритм:

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

закрасить
вправо

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

закрасить
вверх

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

закрасить
влево

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

закрасить
вниз

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

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

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

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

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

Показать
Очки опыта 20
Спросить Зави
Сообщить о проблеме
2. Задание #296180
Задание было решено верно
Задание было решено неверно

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

У Робота есть девять команд. Четыре команды – это команды-приказы:
вверх вниз влево вправо

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

Также у Робота есть команда закрасить, при которой закрашивается клетка, в которой Робот находится в настоящий момент.

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

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

Здесь условие – одна из команд проверки условия.
Последовательность команд – это одна или несколько любых команд-приказов.

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

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

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

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

Например, для движения вправо, пока это возможно, можно использовать следующий алгоритм:
нц пока справа свободно
вправо
кц

На бесконечном поле имеются четыре стены, соединённые между собой, которые образуют прямоугольник. Длины стен неизвестны. В левой вертикальной стене есть ровно один проход, в нижней горизонтальной стене также есть ровно один проход. Проход не может примыкать к углу прямоугольника. Точные места проходов и ширина проходов неизвестны. Робот находится около нижнего конца левой вертикальной стены, снаружи прямоугольника и выше нижней стены. На рисунке 1 указан один из возможных способов расположения стен и Робота (Робот обозначен буквой «Р»).

Напишите для Робота алгоритм, закрашивающий все клетки, расположенные вдоль стен прямоугольника с внутренней стороны. Проходы должны остаться незакрашенными. Робот должен закрасить только клетки, удовлетворяющие данному условию. Например, для рисунка 1 Робот должен закрасить следующие клетки (см. рисунок 2).

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

Алгоритм может быть выполнен в среде формального исполнителя или записан в текстовом редакторе.

Сохраните алгоритм в формате программы Кумир или в текстовом файле. Название файла и каталог для сохранения Вам сообщат организаторы экзамена.

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

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

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

вправо
вниз

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

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

нц пока снизу свободно
    вправо
кц

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

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

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

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

нц пока слева свободно
    вниз
кц

В нижней стене условие не снизу свободно означает, что под Роботом находится стена, поэтому клетка закрашивается. Когда снизу свободно, Робот находится над проходом и движется через него без закрашивания.

Аналогично на левой стене условие не слева свободно означает наличие стены слева. Когда слева свободно, Робот проходит через участок прохода, не закрашивая его.

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

Показать
Очки опыта 20
Спросить Зави
Сообщить о проблеме
3. Задание #296184
Задание было решено верно
Задание было решено неверно

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

У Робота есть девять команд. Четыре команды – это команды-приказы:
вверх вниз влево вправо

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

Также у Робота есть команда закрасить, при которой закрашивается клетка, в которой Робот находится в настоящий момент.

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

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

Здесь условие – одна из команд проверки условия.
Последовательность команд – это одна или несколько любых команд-приказов.

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

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

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

Например, для движения вправо, пока это возможно, можно использовать следующий алгоритм:
нц пока справа свободно
вправо
кц

На бесконечном поле имеются две одинаковые горизонтальные параллельные стены, расположенные друг под другом и отстоящие друг от друга более чем на 1 клетку. Левые края стен находятся на одном уровне. Длины стен неизвестны. Робот находится в клетке, расположенной непосредственно под нижней стеной. На рисунке 1 указан один из возможных способов расположения стен и Робота (Робот обозначен буквой «Р»).

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

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

Алгоритм может быть выполнен в среде формального исполнителя или записан в текстовом редакторе.

Сохраните алгоритм в формате программы Кумир или в текстовом файле. Название файла и каталог для сохранения Вам сообщат организаторы экзамена.

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

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

Затем Робот закрашивает клетки под верхней стеной, двигаясь влево.

нц пока не сверху свободно
    влево
кц

вправо

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

вверх
влево

нц пока сверху свободно
    вверх
кц

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

Первый цикл выводит Робота за левый край нижней стены. После команды вправо Робот оказывается под её первой клеткой.

Во втором цикле условие не сверху свободно означает, что над Роботом находится нижняя стена. Поэтому Робот закрашивает клетку и движется вправо. После окончания стены сверху становится свободно, и цикл завершается.

Далее Робот поднимается справа от нижней стены и командой влево заходит в пространство между стенами. Цикл

нц пока сверху свободно
    вверх
кц

поднимает его до верхней стены.

Последний цикл закрашивает все клетки, расположенные непосредственно под верхней стеной.

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

Показать
Очки опыта 20
Спросить Зави
Сообщить о проблеме
4. Задание #296186
Задание было решено верно
Задание было решено неверно

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

У Робота есть девять команд. Четыре команды – это команды-приказы:
вверх вниз влево вправо

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

Также у Робота есть команда закрасить, при которой закрашивается клетка, в которой Робот находится в настоящий момент.

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

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

Здесь условие – одна из команд проверки условия.
Последовательность команд – это одна или несколько любых команд-приказов.

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

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

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

Например, для движения вправо, пока это возможно, можно использовать следующий алгоритм:
нц пока справа свободно
вправо
кц

На бесконечном поле имеются две вертикальные стены и одна горизонтальная, соединяющая нижний конец левой и верхний конец правой вертикальных стен. Длины стен неизвестны. Робот находится в клетке, расположенной слева от нижнего края правой вертикальной стены, рядом со стеной. На рисунке 1 указан один из возможных способов расположения стен и Робота (Робот обозначен буквой «Р»).

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

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

Алгоритм может быть выполнен в среде формального исполнителя или записан в текстовом редакторе.

Сохраните алгоритм в формате программы Кумир или в текстовом файле. Название файла и каталог для сохранения Вам сообщат организаторы экзамена.

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

После этого Робот движется вверх и закрашивает все клетки, расположенные справа от правой вертикальной стены. Дойдя до её верхнего конца, Робот оказывается выше горизонтальной стены.

Затем он движется влево над горизонтальной стеной до левой вертикальной стены и закрашивает клетки справа от неё, двигаясь вверх.

нц пока не справа свободно
    вниз
кц

вправо
вверх

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

нц пока слева свободно
    влево
кц

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

Первый цикл

нц пока не справа свободно
    вниз
кц

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

Команды

вправо
вверх

переводят Робота на правую сторону этой стены.

Цикл

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

закрашивает все клетки справа от правой вертикальной стены.

После её верхнего конца Робот движется влево, пока не встретит левую вертикальную стену:

нц пока слева свободно
    влево
кц

Последний цикл закрашивает все клетки, расположенные справа от левой вертикальной стены.

Таким образом, будут закрашены все и только клетки, примыкающие к обеим вертикальным стенам справа.

Показать
Очки опыта 20
Спросить Зави
Сообщить о проблеме
5. Задание #296187
Задание было решено верно
Задание было решено неверно

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

У Робота есть девять команд. Четыре команды – это команды-приказы:
вверх вниз влево вправо

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

Также у Робота есть команда закрасить, при которой закрашивается клетка, в которой Робот находится в настоящий момент.

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

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

Здесь условие – одна из команд проверки условия.
Последовательность команд – это одна или несколько любых команд-приказов.

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

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

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

Например, для движения вправо, пока это возможно, можно использовать следующий алгоритм:
нц пока справа свободно
вправо
кц

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

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

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

Алгоритм может быть выполнен в среде формального исполнителя или записан в текстовом редакторе.

Сохраните алгоритм в формате программы Кумир или в текстовом файле. Название файла и каталог для сохранения Вам сообщат организаторы экзамена.

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

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

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

Условие не снизу свободно означает, что непосредственно под Роботом находится стена.

В каждой такой позиции Робот:

вверх
закрасить
вниз

закрашивает клетку, расположенную выше стены на расстоянии одной пустой клетки, а затем командой вправо переходит к следующему участку стены.

Когда Робот оказывается справа от конца стены, снизу становится свободно и цикл завершается.

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

Показать
Очки опыта 20
Спросить Зави
Сообщить о проблеме
6. Задание #296195
Задание было решено верно
Задание было решено неверно

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

У Робота есть девять команд. Четыре команды – это команды-приказы:
вверх вниз влево вправо

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

Также у Робота есть команда закрасить, при которой закрашивается клетка, в которой Робот находится в настоящий момент.

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

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

Здесь условие – одна из команд проверки условия.
Последовательность команд – это одна или несколько любых команд-приказов.

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

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

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

Например, для движения вправо, пока это возможно, можно использовать следующий алгоритм:
нц пока справа свободно
вправо
кц

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

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

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

Алгоритм может быть выполнен в среде формального исполнителя или записан в текстовом редакторе.

Сохраните алгоритм в формате программы Кумир или в текстовом файле. Название файла и каталог для сохранения Вам сообщат организаторы экзамена.

Начальное положение Робота неизвестно, поэтому сначала нужно найти левый край стены.

Пока снизу находится стена, Робот движется влево. После выхода за левый край снизу станет свободно. Затем Робот делает один шаг вправо и оказывается над первой клеткой стены.

После этого он движется вправо вдоль всей стены и закрашивает каждую клетку.

нц пока не снизу свободно
    влево
кц

вправо

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

Первый цикл

нц пока не снизу свободно
    влево
кц

перемещает Робота влево до начала стены. Когда Робот оказывается левее стены, снизу становится свободно и цикл заканчивается.

Команда

вправо

возвращает Робота на клетку непосредственно над левым краем стены.

Во втором цикле условие не снизу свободно означает, что непосредственно под Роботом находится стена. Поэтому текущая клетка закрашивается, после чего Робот переходит вправо.

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

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

Показать
Очки опыта 20
Спросить Зави
Сообщить о проблеме
7. Задание #296194
Задание было решено верно
Задание было решено неверно

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

У Робота есть девять команд. Четыре команды – это команды-приказы:
вверх вниз влево вправо

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

Также у Робота есть команда закрасить, при которой закрашивается клетка, в которой Робот находится в настоящий момент.

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

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

Здесь условие – одна из команд проверки условия.
Последовательность команд – это одна или несколько любых команд-приказов.

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

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

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

Например, для движения вправо, пока это возможно, можно использовать следующий алгоритм:
нц пока справа свободно
вправо
кц

На бесконечном поле имеются две одинаковые вертикальные стены и одна горизонтальная, соединяющая верхние концы стен. Длины стен неизвестны. Робот находится в одной из клеток, расположенных между нижними краями вертикальных стен. На рисунке 1 указан один из возможных способов расположения стен и Робота (Робот обозначен буквой «Р»).

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

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

Алгоритм может быть выполнен в среде формального исполнителя или записан в текстовом редакторе.

Сохраните алгоритм в формате программы Кумир или в текстовом файле. Название файла и каталог для сохранения Вам сообщат организаторы экзамена.

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

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

нц пока слева свободно
    влево
кц

нц пока не слева свободно
    вниз
кц

влево
вверх

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

вправо

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

Первый цикл

нц пока слева свободно
    влево
кц

перемещает Робота к левой вертикальной стене.

Затем цикл

нц пока не слева свободно
    вниз
кц

ведёт Робота вниз вдоль стены. Как только он окажется ниже её нижнего конца, слева станет свободно.

Команды

влево
вверх

переводят Робота на внешнюю сторону левой вертикальной стены.

После этого цикл

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

поднимает Робота вдоль стены до её верхнего конца.

Команда вправо переводит его на первую клетку непосредственно над горизонтальной стеной.

Последний цикл закрашивает все нужные клетки:

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

Пока снизу находится горизонтальная стена, клетка закрашивается. После правого конца стены снизу становится свободно, и выполнение алгоритма завершается.

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

Показать
Очки опыта 20
Спросить Зави
Сообщить о проблеме
8. Задание #296225
Задание было решено верно
Задание было решено неверно

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

У Робота есть девять команд. Четыре команды – это команды-приказы:
вверх вниз влево вправо

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

Также у Робота есть команда закрасить, при которой закрашивается клетка, в которой Робот находится в настоящий момент.

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

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

Здесь условие – одна из команд проверки условия.
Последовательность команд – это одна или несколько любых команд-приказов.

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

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

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

Например, для движения вправо, пока это возможно, можно использовать следующий алгоритм:
нц пока справа свободно
вправо
кц

Робот находится в произвольной клетке узкого вертикального коридора. Ширина коридора – одна клетка, длина коридора может быть произвольной. Точное положение Робота также неизвестно. Возможный вариант начального расположения Робота приведён на рисунке 1 (Робот обозначен буквой «Р»).

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

Например, для рисунка 1 Робот должен закрасить следующие клетки (см. рисунок 2).

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

Алгоритм может быть выполнен в среде формального исполнителя или записан в текстовом редакторе.

Сохраните алгоритм в формате программы Кумир или в текстовом файле. Название файла и каталог для сохранения Вам сообщат организаторы экзамена.

Начальное положение Робота неизвестно, поэтому сначала переместим его вверх до верхнего конца коридора.

После этого Робот будет двигаться вниз и закрашивать все клетки коридора. Последнюю клетку нужно закрасить отдельно, так как в ней условие снизу свободно уже не выполняется.

нц пока сверху свободно
    вверх
кц

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

закрасить

Первый цикл

нц пока сверху свободно
    вверх
кц

перемещает Робота в самую верхнюю клетку коридора независимо от его начального положения.

Затем цикл

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

закрашивает клетки сверху вниз и перемещает Робота к нижнему концу коридора.

В самой нижней клетке снизу находится стена, поэтому цикл завершается. Команда

закрасить

закрашивает последнюю клетку.

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

Показать
Очки опыта 20
Спросить Зави
Сообщить о проблеме
9. Задание #296224
Задание было решено верно
Задание было решено неверно

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

У Робота есть девять команд. Четыре команды – это команды-приказы:
вверх вниз влево вправо

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

Также у Робота есть команда закрасить, при которой закрашивается клетка, в которой Робот находится в настоящий момент.

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

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

Здесь условие – одна из команд проверки условия.
Последовательность команд – это одна или несколько любых команд-приказов.

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

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

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

Например, для движения вправо, пока это возможно, можно использовать следующий алгоритм:
нц пока справа свободно
вправо
кц

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

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

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

Алгоритм может быть выполнен в среде формального исполнителя или записан в текстовом редакторе.

Сохраните алгоритм в формате программы Кумир или в текстовом файле. Название файла и каталог для сохранения Вам сообщат организаторы экзамена.

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

Когда горизонтальная стена закончится, Робот окажется в угловой клетке. Её нужно закрасить отдельно.

После этого Робот спускается на одну клетку и движется вниз вдоль правой стороны вертикальной стены, закрашивая клетки, пока слева находится стена.

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

закрасить
вниз

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

Первый цикл

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

закрашивает все клетки непосредственно над горизонтальной стеной.

После её окончания Робот оказывается в угловой клетке, поэтому выполняется команда:

закрасить

Затем команда вниз переводит Робота в первую клетку справа от вертикальной стены.

Последний цикл

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

закрашивает все клетки справа от вертикальной стены. Когда вертикальная стена заканчивается, слева становится свободно и цикл завершается.

Таким образом, будут закрашены все клетки выше горизонтальной стены, все клетки справа от вертикальной стены и угловая клетка. Другие клетки закрашены не будут.

Показать
Очки опыта 20
Спросить Зави
Сообщить о проблеме
10. Задание #296227
Задание было решено верно
Задание было решено неверно

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

У Робота есть девять команд. Четыре команды – это команды-приказы:
вверх вниз влево вправо

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

Также у Робота есть команда закрасить, при которой закрашивается клетка, в которой Робот находится в настоящий момент.

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

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

Здесь условие – одна из команд проверки условия.
Последовательность команд – это одна или несколько любых команд-приказов.

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

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

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

Например, для движения вправо, пока это возможно, можно использовать следующий алгоритм:
нц пока справа свободно
вправо
кц

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

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

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

Алгоритм может быть выполнен в среде формального исполнителя или записан в текстовом редакторе.

Сохраните алгоритм в формате программы Кумир или в текстовом файле. Название файла и каталог для сохранения Вам сообщат организаторы экзамена.

Робот находится справа от нижнего края первой вертикальной стены. Сначала нужно закрасить все клетки справа от этой стены, двигаясь вверх.

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

Затем Робот движется вправо вдоль горизонтальной стены, ничего не закрашивая, пока не упрётся во вторую вертикальную стену. В этой позиции находится нужная угловая клетка — её закрашиваем.

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

закрасить

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

закрасить

Первый цикл

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

закрашивает клетки, расположенные справа от первой вертикальной стены, и поднимает Робота вверх.

Когда Робот достигает горизонтальной стены, сверху становится несвободно. Цикл завершается, а команда

закрасить

закрашивает последнюю клетку рядом с первой вертикальной стеной.

После этого цикл

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

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

Когда справа появляется стена, Робот находится в угловой клетке на пересечении горизонтальной и второй вертикальной стены. Последняя команда

закрасить

закрашивает эту клетку.

Таким образом, будут закрашены все клетки справа от первой вертикальной стены и одна требуемая угловая клетка. Остальные клетки останутся незакрашенными.

Показать
Очки опыта 20
Спросить Зави
Сообщить о проблеме
11. Задание #296260
Задание было решено верно
Задание было решено неверно

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

У Робота есть девять команд. Четыре команды – это команды-приказы:
вверх вниз влево вправо

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

Также у Робота есть команда закрасить, при которой закрашивается клетка, в которой Робот находится в настоящий момент.

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

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

Здесь условие – одна из команд проверки условия.
Последовательность команд – это одна или несколько любых команд-приказов.

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

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

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

Например, для движения вправо, пока это возможно, можно использовать следующий алгоритм:
нц пока справа свободно
вправо
кц

На бесконечном поле имеется лестница. Сначала лестница слева направо поднимается вверх, затем спускается вниз. Высота каждой ступени – две клетки, ширина – одна клетка. Робот находится на нижней ступеньке лестницы слева. Количество ступенек, ведущих вверх, и количество ступенек, ведущих вниз, неизвестно. На рисунке 1 указан один из возможных способов расположения лестницы и Робота (Робот обозначен буквой «Р»).

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

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

Алгоритм может быть выполнен в среде формального исполнителя или записан в текстовом редакторе.

Сохраните алгоритм в формате программы Кумир или в текстовом файле. Название файла и каталог для сохранения Вам сообщат организаторы экзамена.

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

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

Когда справа становится свободно, Робот достиг верхней ступени. Далее начинается спуск.

закрасить

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

вправо
вниз

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

Первый цикл

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

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

На самой верхней ступени справа от Робота уже нет стены, поэтому первый цикл завершается.

Команды

вправо
вниз

переводят Робота к правой стороне первой вертикальной части спуска.

Если слева находится стена, значит, впереди имеется следующая ступень. В цикле

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

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

После последней ступени слева становится свободно, поэтому цикл завершается.

Таким образом, будут закрашены все и только клетки, расположенные непосредственно над ступенями лестницы, независимо от количества ступенек, ведущих вверх и вниз.

Показать
Очки опыта 20
Спросить Зави
Сообщить о проблеме
12. Задание #296259
Задание было решено верно
Задание было решено неверно

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

У Робота есть девять команд. Четыре команды – это команды-приказы:
вверх вниз влево вправо

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

Также у Робота есть команда закрасить, при которой закрашивается клетка, в которой Робот находится в настоящий момент.

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

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

Здесь условие – одна из команд проверки условия.
Последовательность команд – это одна или несколько любых команд-приказов.

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

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

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

Например, для движения вправо, пока это возможно, можно использовать следующий алгоритм:
нц пока справа свободно
вправо
кц

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

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

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

Алгоритм может быть выполнен в среде формального исполнителя или записан в текстовом редакторе.

Сохраните алгоритм в формате программы Кумир или в текстовом файле. Название файла и каталог для сохранения Вам сообщат организаторы экзамена.

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

Затем поднимаемся вдоль первой стены. Когда слева станет свободно, Робот окажется на одну клетку выше стены, поэтому возвращаемся на одну клетку вниз и закрашиваем клетку у верхнего края.

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

закрасить

нц пока не слева свободно
    вверх
кц

вниз
закрасить

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

закрасить

Первый цикл

нц пока не слева свободно
    вверх
кц

поднимает Робота вдоль первой вертикальной стены. После верхнего края слева становится свободно, поэтому цикл завершается.

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

Далее цикл

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

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

Последняя команда закрасить закрашивает требуемую клетку слева от второй стены.

Таким образом, будут закрашены ровно три требуемые клетки: у нижнего и верхнего края первой стены и у верхнего края второй стены.

Показать
Очки опыта 20
Спросить Зави
Сообщить о проблеме
13. Задание #296258
Задание было решено верно
Задание было решено неверно

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

У Робота есть девять команд. Четыре команды – это команды-приказы:
вверх вниз влево вправо

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

Также у Робота есть команда закрасить, при которой закрашивается клетка, в которой Робот находится в настоящий момент.

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

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

Здесь условие – одна из команд проверки условия.
Последовательность команд – это одна или несколько любых команд-приказов.

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

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

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

Например, для движения вправо, пока это возможно, можно использовать следующий алгоритм:
нц пока справа свободно
вправо
кц

На бесконечном поле имеются две одинаковые горизонтальные стены и одна вертикальная, соединяющая правые концы стен. Длины стен неизвестны. Робот находится в одной из клеток, расположенных правее вертикальной стены, рядом со стеной. На рисунке 1 указан один из возможных способов расположения стен и Робота (Робот обозначен буквой «Р»).

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

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

Алгоритм может быть выполнен в среде формального исполнителя или записан в текстовом редакторе.

Сохраните алгоритм в формате программы Кумир или в текстовом файле. Название файла и каталог для сохранения Вам сообщат организаторы экзамена.

Сначала Робот поднимается вдоль правой стороны вертикальной стены до её верхнего конца.

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

После этого Робот оказывается в верхней клетке слева от вертикальной стены. Остаётся двигаться вниз и закрашивать все клетки вдоль стены.

нц пока не слева свободно
    вверх
кц

влево

нц пока не снизу свободно
    влево
кц

вниз

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

закрасить

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

Первый цикл

нц пока не слева свободно
    вверх
кц

поднимает Робота вдоль правой стороны вертикальной стены. После верхнего конца стены слева становится свободно, и цикл завершается.

Команда влево переводит Робота в клетку над верхней горизонтальной стеной. Далее цикл

нц пока не снизу свободно
    влево
кц

ведёт Робота вдоль стены до её левого конца.

После команды вниз Робот оказывается на уровне пространства между горизонтальными стенами. Цикл

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

перемещает его вправо до вертикальной стены.

Теперь Робот находится в верхней клетке, примыкающей к вертикальной стене слева. Она закрашивается, после чего цикл

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

закрашивает все остальные клетки вдоль вертикальной стены до нижней горизонтальной стены.

Таким образом, будут закрашены все и только клетки, примыкающие к вертикальной стене слева.

Показать
Очки опыта 20
Спросить Зави
Сообщить о проблеме
14. Задание #296262
Задание было решено верно
Задание было решено неверно

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

У Робота есть девять команд. Четыре команды – это команды-приказы:
вверх вниз влево вправо

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

Также у Робота есть команда закрасить, при которой закрашивается клетка, в которой Робот находится в настоящий момент.

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

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

Здесь условие – одна из команд проверки условия.
Последовательность команд – это одна или несколько любых команд-приказов.

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

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

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

Например, для движения вправо, пока это возможно, можно использовать следующий алгоритм:
нц пока справа свободно
вправо
кц

Робот находится в левом верхнем углу огороженного пространства, имеющего форму прямоугольника. Размеры прямоугольника неизвестны. Один из возможных размеров прямоугольника и расположение Робота внутри прямоугольника приведено на рисунке 1 (Робот обозначен буквой «Р»).

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

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

Алгоритм может быть выполнен в среде формального исполнителя или записан в текстовом редакторе.

Сохраните алгоритм в формате программы Кумир или в текстовом файле. Название файла и каталог для сохранения Вам сообщат организаторы экзамена.

Робот находится в левом верхнем углу прямоугольника. Сначала нужно спуститься вдоль левой стены до нижней стороны.

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

нц пока снизу свободно
    вниз
кц

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

закрасить

Первый цикл

нц пока снизу свободно
    вниз
кц

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

Затем цикл

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

закрашивает клетки нижнего ряда слева направо.

Когда Робот окажется в правом нижнем углу, справа будет стена и цикл завершится. Последняя команда

закрасить

закрашивает правую нижнюю клетку.

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

Показать
Очки опыта 20
Спросить Зави
Сообщить о проблеме
15. Задание #296263
Задание было решено верно
Задание было решено неверно

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

У Робота есть девять команд. Четыре команды – это команды-приказы:
вверх вниз влево вправо

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

Также у Робота есть команда закрасить, при которой закрашивается клетка, в которой Робот находится в настоящий момент.

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

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

Здесь условие – одна из команд проверки условия.
Последовательность команд – это одна или несколько любых команд-приказов.

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

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

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

Например, для движения вправо, пока это возможно, можно использовать следующий алгоритм:
нц пока справа свободно
вправо
кц

Робот находится в левой клетке узкого горизонтального коридора. Ширина коридора – одна клетка, длина коридора может быть произвольной. Возможный вариант начального расположения Робота приведён на рисунке 1 (Робот обозначен буквой «Р»).

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

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

Алгоритм может быть выполнен в среде формального исполнителя или записан в текстовом редакторе.

Сохраните алгоритм в формате программы Кумир или в текстовом файле. Название файла и каталог для сохранения Вам сообщат организаторы экзамена.

Робот находится в левой клетке коридора. Сначала закрашиваем начальную клетку, затем движемся вправо до конца коридора, закрашивая каждую новую клетку.

После этого Робот находится в правой клетке коридора. Чтобы вернуться в исходную позицию, двигаемся влево, пока это возможно.

закрасить

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

нц пока слева свободно
    влево
кц

Команда

закрасить

закрашивает начальную клетку.

Цикл

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

перемещает Робота вправо по всему коридору и закрашивает каждую клетку. Когда Робот достигает правого конца, справа становится несвободно и цикл завершается.

Затем цикл

нц пока слева свободно
    влево
кц

возвращает Робота в левую клетку коридора, то есть в исходную позицию.

Таким образом, все клетки коридора будут закрашены, Робот не разрушится и после выполнения алгоритма вернётся в исходную позицию.

Показать
Очки опыта 20
Спросить Зави
Сообщить о проблеме
16. Задание #296270
Задание было решено верно
Задание было решено неверно

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

У Робота есть девять команд. Четыре команды – это команды-приказы:
вверх вниз влево вправо

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

Также у Робота есть команда закрасить, при которой закрашивается клетка, в которой Робот находится в настоящий момент.

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

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

Здесь условие – одна из команд проверки условия.
Последовательность команд – это одна или несколько любых команд-приказов.

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

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

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

Например, для движения вправо, пока это возможно, можно использовать следующий алгоритм:
нц пока справа свободно
вправо
кц

На бесконечном поле имеется стена. Стена состоит из трёх последовательных отрезков: вправо, вниз, вправо, все отрезки неизвестной длины. Робот находится в клетке, расположенной над левым концом первого отрезка. На рисунке 1 указан один из возможных способов расположения стен и Робота (Робот обозначен буквой «Р»).

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

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

Алгоритм может быть выполнен в среде формального исполнителя или записан в текстовом редакторе.

Сохраните алгоритм в формате программы Кумир или в текстовом файле. Название файла и каталог для сохранения Вам сообщат организаторы экзамена.

Робот находится непосредственно над левым концом первого горизонтального отрезка. Пока снизу находится стена, закрашиваем клетки и движемся вправо.

После окончания первого отрезка Робот окажется в угловой клетке. Её нужно закрасить отдельно.

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

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

закрасить
вниз

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

Первый цикл

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

закрашивает все клетки, расположенные непосредственно над первым отрезком.

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

После команды вниз Робот оказывается справа от второго вертикального отрезка. Цикл

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

закрашивает все клетки, расположенные справа от второго отрезка.

Когда вертикальная стена заканчивается, слева становится свободно и цикл завершается.

Таким образом, будут закрашены все и только клетки, расположенные непосредственно над первым отрезком, справа от второго отрезка и угловая клетка.

Показать
Очки опыта 20
Спросить Зави
Сообщить о проблеме
17. Задание #296274
Задание было решено верно
Задание было решено неверно

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

У Робота есть девять команд. Четыре команды – это команды-приказы:
вверх вниз влево вправо

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

Также у Робота есть команда закрасить, при которой закрашивается клетка, в которой Робот находится в настоящий момент.

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

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

Здесь условие – одна из команд проверки условия.
Последовательность команд – это одна или несколько любых команд-приказов.

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

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

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

Например, для движения вправо, пока это возможно, можно использовать следующий алгоритм:
нц пока справа свободно
вправо
кц

Робот находится в правой клетке узкого горизонтального коридора. Ширина коридора – одна клетка, длина коридора может быть произвольной. Возможный вариант начального расположения Робота приведён на рисунке 1 (Робот обозначен буквой «Р»).

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

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

Алгоритм может быть выполнен в среде формального исполнителя или записан в текстовом редакторе.

Сохраните алгоритм в формате программы Кумир или в текстовом файле. Название файла и каталог для сохранения Вам сообщат организаторы экзамена.

Робот находится в правой клетке коридора. Сначала закрашиваем начальную клетку, затем движемся влево до конца коридора, закрашивая каждую новую клетку.

После этого Робот находится в левой клетке коридора. Чтобы вернуться в исходную позицию, двигаемся вправо, пока это возможно.

закрасить

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

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

Команда

закрасить

закрашивает начальную клетку.

Цикл

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

перемещает Робота влево по всему коридору и закрашивает каждую клетку. Когда Робот достигает левого конца, слева становится несвободно и цикл завершается.

Затем цикл

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

возвращает Робота в правую клетку коридора, то есть в исходную позицию.

Таким образом, все клетки коридора будут закрашены, Робот не разрушится и после выполнения алгоритма вернётся в исходную позицию.

Показать
Очки опыта 20
Спросить Зави
Сообщить о проблеме
18. Задание #296275
Задание было решено верно
Задание было решено неверно

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

У Робота есть девять команд. Четыре команды – это команды-приказы:
вверх вниз влево вправо

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

Также у Робота есть команда закрасить, при которой закрашивается клетка, в которой Робот находится в настоящий момент.

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

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

Здесь условие – одна из команд проверки условия.
Последовательность команд – это одна или несколько любых команд-приказов.

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

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

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

Например, для движения вправо, пока это возможно, можно использовать следующий алгоритм:
нц пока справа свободно
вправо
кц

На бесконечном поле есть горизонтальная и вертикальная стены. Левый конец горизонтальной стены соединён с нижним концом вертикальной стены. Длины стен неизвестны. В каждой стене есть ровно один проход, точное место прохода и его ширина неизвестны. Робот находится в клетке, расположенной рядом с вертикальной стеной справа от её верхнего конца. На рисунке 1 указан один из возможных способов расположения стен и Робота (Робот обозначен буквой «Р»).

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

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

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

Алгоритм может быть выполнен в среде формального исполнителя или записан в текстовом редакторе.

Сохраните алгоритм в формате программы Кумир или в текстовом файле. Название файла и каталог для сохранения Вам сообщат организаторы экзамена.

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

Движение вниз продолжается до угловой клетки, в которой снизу находится горизонтальная стена. Эту клетку нужно закрасить.

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

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

закрасить
вправо

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

нц пока снизу свободно
    вправо
кц

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

В первом цикле условие не слева свободно означает, что слева от Робота находится вертикальная стена, поэтому клетку нужно закрасить. Если слева свободно, Робот находится напротив прохода, и клетка остаётся незакрашенной.

Условие снизу свободно позволяет двигаться вниз до нижнего конца вертикальной стены. В угловой клетке снизу находится горизонтальная стена, поэтому цикл завершается и эта клетка закрашивается отдельно.

После команды вправо Робот начинает движение над горизонтальной стеной. Первый цикл

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

закрашивает клетки над первой частью стены.

Когда снизу становится свободно, начинается проход. Цикл

нц пока снизу свободно
    вправо
кц

позволяет пройти его целиком без закрашивания.

После прохода снизу снова появляется стена, и последний цикл закрашивает оставшуюся часть горизонтальной стены.

Таким образом, будут закрашены все и только клетки, расположенные непосредственно выше горизонтальной стены и правее вертикальной стены, а оба прохода независимо от их положения и ширины останутся незакрашенными.

Показать
Очки опыта 20
Спросить Зави
Сообщить о проблеме
19. Задание #296276
Задание было решено верно
Задание было решено неверно

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

У Робота есть девять команд. Четыре команды – это команды-приказы:
вверх вниз влево вправо

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

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

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

Здесь условие – одна из команд проверки условия.
Последовательность команд – это одна или несколько любых команд-приказов.

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

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

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

Например, для движения вправо, пока это возможно, можно использовать следующий алгоритм:
нц пока справа свободно
вправо
кц

Также у Робота есть команда закрасить, при которой закрашивается клетка, в которой Робот находится в настоящий момент.

На бесконечном поле имеется стена, состоящая из $5$ последовательных отрезков, расположенных змейкой: вниз, вправо, вверх, вправо, вниз. Все отрезки неизвестной длины. Робот находится в клетке, расположенной слева от верхнего края первой вертикальной стены. На рисунке 1 указан один из возможных способов расположения стен и Робота (Робот обозначен буквой «Р»).

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

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

Алгоритм может быть выполнен в среде формального исполнителя или записан в текстовом редакторе.

Сохраните алгоритм в формате программы Кумир или в текстовом файле. Название файла и каталог для сохранения Вам сообщат организаторы экзамена.

Сначала Робот движется вниз вдоль левой стороны первого вертикального отрезка и закрашивает клетки. После окончания стены он попадает в угловую клетку — её также нужно закрасить.

Затем Робот переходит вправо и закрашивает клетки под вторым горизонтальным отрезком.

После второго отрезка Робот поднимается вдоль третьего вертикального отрезка, ничего не закрашивая, пока не достигнет четвёртого горизонтального отрезка.

Далее он закрашивает клетки под четвёртым отрезком и после достижения пятого вертикального отрезка продолжает движение вниз, закрашивая клетки слева от него.

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

закрасить
вправо

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

вверх
нц пока сверху свободно
    вверх
кц

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

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

Первый цикл

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

закрашивает клетки слева от первого вертикального отрезка. Когда первый отрезок заканчивается, справа становится свободно.

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

Цикл

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

закрашивает клетки непосредственно под вторым горизонтальным отрезком.

После его окончания Робот оказывается справа от нижнего конца третьего вертикального отрезка. Команда вверхпереводит его к стене, а цикл

нц пока сверху свободно
    вверх
кц

поднимает Робота до четвёртого горизонтального отрезка.

Далее цикл

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

закрашивает клетки под четвёртым отрезком до пятой вертикальной стены.

Последний цикл

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

закрашивает последнюю клетку под четвёртым отрезком и все клетки, расположенные слева от пятого вертикального отрезка.

Таким образом, будут закрашены все и только требуемые клетки.

Показать
Очки опыта 20
Спросить Зави
Сообщить о проблеме
20. Задание #296281
Задание было решено верно
Задание было решено неверно

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

У Робота есть девять команд. Четыре команды – это команды-приказы:
вверх вниз влево вправо

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

Также у Робота есть команда закрасить, при которой закрашивается клетка, в которой Робот находится в настоящий момент.

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

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

Здесь условие – одна из команд проверки условия.
Последовательность команд – это одна или несколько любых команд-приказов.

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

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

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

Например, для движения вправо, пока это возможно, можно использовать следующий алгоритм:
нц пока справа свободно
вправо
кц

На бесконечном поле имеется лестница. Высота подъема лестницы неизвестна. Сначала лестница поднимается вверх, затем спускается вниз. Высота спуска также неизвестна. Высота и ширина каждой ступени – одна клетка. Робот находится на нижней ступеньке на левом краю лестницы. На рисунке 1 указан один из возможных способов расположения лестницы и Робота. Робот обозначен буквой «Р».

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

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

Алгоритм может быть выполнен в среде формального исполнителя или записан в текстовом редакторе.

Сохраните алгоритм в формате программы Кумир или в текстовом файле. Название файла и каталог для сохранения Вам сообщат организаторы экзамена.

Робот находится на первой ступени. Сначала закрашиваем её.

Пока справа находится вертикальная часть лестницы, лестница поднимается. Для перехода на следующую ступень Робот поднимается на одну клетку и перемещается вправо.

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

закрасить

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

вправо
вниз

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

Первый цикл

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

проходит все ступени, ведущие вверх. У каждой такой ступени справа от Робота находится вертикальная стенка. После перехода на следующую ступень её клетка закрашивается.

Когда Робот достигает верхней ступени, справа становится свободно и первый цикл завершается.

Команды

вправо
вниз

переводят Робота на первую ступень, ведущую вниз.

На спускающейся части лестницы слева от Робота находится вертикальная стенка, поэтому выполняется цикл:

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

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

После последней ступени Робот выходит за пределы лестницы, слева становится свободно, и цикл завершается.

Таким образом, будут закрашены все и только клетки, расположенные на ступенях лестницы, независимо от высоты подъёма и высоты спуска.

Показать
Очки опыта 20
Спросить Зави
03:50:00
Решено заданий: 0 из
0 заданий сегодня