Задания
Версия для печати и копирования в MS Word
Тип 15 № 5085

15.1. Исполнитель Робот умеет перемещаться по лабиринту, начерченному на плоскости, разбитой на клетки. Ниже приведено описание Робота. У Робота есть четыре команды перемещения:

вверх вниз влево вправо

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

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

сверху свободно снизу свободно слева свободно справа свободно

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

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

 

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

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

 

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

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

 

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

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

 

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

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

 

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

 

Выполните задание.

 

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

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

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

 

15.2. Напишите программу, которая по двум данным натуральным числам a и b, не превосходящим 30000, подсчитывает количество чётных натуральных чисел на отрезке [a, b] (включая концы отрезка). Программа получает на вход два натуральных числа a и b, при этом гарантируется, что 1 ≤ a  b  30000. Проверять входные данные на корректность не нужно. Программа должна вывести одно число: количество чётных чисел на отрезке [a, b].

 

Пример работы программы:

 

Входные данные

Выходные данные

10

20

6

Спрятать решение

Решение.

15.1 Следующий алгоритм выполнит требуемую задачу.

 

вправо

вниз

 

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

закрасить

вправо

закрасить

вниз

кц

 

закрасить

вверх

 

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

закрасить

вправо

закрасить

вверх

кц

 

15.2. Вариант решения на языке Паскаль.

var

a, b, count, i: integer;

begin

read(a, b);

count:=0;

for i := a to b do begin

if i mod 2 = 0 then count := count + 1;

end;

writeln(count);

end.

Спрятать критерии
Критерии проверки:

Критерии оценивания выполнения задания 15.1Баллы
Алгоритм правильно работает при всех допустимых исходных данных2
При всех допустимых исходных данных верно следующее:

1) выполнение алгоритма завершается, и при этом Робот не

разбивается;

2) закрашено не более 10 лишних клеток;

3) остались незакрашенными не более 10 клеток из числа тех,

которые должны были быть закрашены

1
Задание выполнено неверно, т. е. не выполнены условия, позволяющие поставить 1 или 2 балла0
Максимальный балл2

 

Критерии оценивания выполнения задания 15.2Баллы
Предложено верное решение. Программа правильно работает на всех приведённых выше тестах. Программа может быть записана на любом языке программирования2
Программа выдаёт неверный ответ на одном из тестов, приведённых выше. Например, решение, в котором неверно задано условие отбора чисел: if (a mod 8 = 0) or (a > 9) and (a < 100), выдаст неправильный ответ на тесте № 11
Программа выдаёт на тестах неверные ответы, отличные от описанных в критерии на 1 балл0
Максимальный балл2