СДАМ ГИА: РЕШУ ЕГЭ
Образовательный портал для подготовки к экзаменам
Информатика
≡ информатика
сайты - меню - вход - новости


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

Система команд исполнителя РОБОТ, «живущего» в прямоугольном лабиринте на клетчатой плоскости:

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

При выполнении этих команд РОБОТ перемещается на одну клетку соответственно: вверх, вниз, влево, вправо.

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

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

Цикл

ПОКА <условие> команда

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

Сколько клеток лабиринта соответствуют требованию, что, выполнив предложенную программу, РОБОТ остановится в той же клетке, с которой он начал движение?

 

НАЧАЛО

ПОКА <слева свободно> вниз

ПОКА <снизу свободно> вправо

ПОКА <справа свободно> вверх

ПОКА <сверху свободно> влево

КОНЕЦ

Решение.

Выясним, что необходимо для того, чтобы РОБОТ остановился в той же клетке, с которой он начал движение. Так как программа заканчивается командой "ПОКА <сверху свободно> влево", следовательно, для того, чтобы робот остановился в той же клетке, с которой он начал движение, необходимо, чтобы у этой клетки была стенка сверху. Этому условию удовлетворяют все клетки верхней стенки лабиринта и еще шесть клеток кроме нее. Проверим каждую клетку, удовлетворяющую условию. Обратим внимание, что возможны зацикливания, например, если начать движение из клетки А1, Б1, если нумеровать цифрами сверху вниз, а буквами слева направо.

 

Ответ: три клетки В1, А2 и Д3.

Спрятать решение · · Видеокурс ·
Гость 09.12.2013 22:19

У всех клеток столбика А слева не свободно. Никакое движение вниз робот совершать не может! Ответ А2 есть ВАША ошибка.

Три команды алгоритма из точки В1-верны, но в точке Г1 - двойная ошибка. Сверху не свободно. Здесь не может быть движения влево!!! Да и препятствие между В1 и Г1, мешающее ему вернуться в клетку Б1.

********************************

Из 10 задач, решённых мною, в 9 задачах содержатся ошибки создателя!

Надо принять меры!

Петр Мурзин

Добрый вечер.

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

НАЧАЛО

ПОКА <слева сво­бод­но> вниз {Для клетки А2 условие «слева свободно» не выполняется, следовательно, данный цикл не выполняется — исполнитель переходит к следующему циклу в программе.}

ПОКА <снизу сво­бод­но> впра­во {Для клетки А2 условие «снизу сво­бод­но» выполняется, следовательно, данный цикл выполняется, после его исполнения робот окажется в клетке Д2}

ПОКА <спра­ва сво­бод­но> вверх {Для клетки Д2 условие «спра­ва сво­бод­но» не выполняется, следовательно, данный цикл не выполняется — исполнитель переходит к следующему циклу в программе.}

ПОКА <свер­ху сво­бод­но> влево {Для клетки А2 условие «свер­ху сво­бод­но» выполняется, следовательно, данный цикл выполняется, после его исполнения робот окажется в клетке А2}

КОНЕЦ

 

Таким образом, клетка А2 со­от­вет­ству­ют необходимому тре­бо­ва­нию.

Ваша ошибка — систематическая. Надо принять меры.

Евгений Журавлёв 21.03.2014 17:57

А почему клетка А1 не подходит?

А А3 почему не подходит?

А1: 1) слева не свободно, значит вниз не идём (А1)

2) снизу не свободно, значит вправо не идём (А1)

3) справа свободно, значит идём вверх (вверх идти некуда, остаёмся, А1)

4) Сверху не свободно, остаёмся (А1)

С А3 тоже самое.

Или тут соль в том, что если РОБОТ не выполнил ни одного перемещения, то программа не работала и нельзя учитывать эту точку?

Петр Мурзин

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

Ещё раз другими словами. В условии сказано: «Сколь­ко кле­ток ла­би­рин­та со­от­вет­ству­ют тре­бо­ва­нию, что, вы­пол­нив пред­ло­жен­ную про­грам­му, РОБОТ оста­но­вит­ся в той же клет­ке, с ко­то­рой он начал дви­же­ние?». Стартуя из клетки А1 Робот не выполнит программу, на шаге «ПОКА <спра­ва сво­бод­но> вверх» начнётся бесконечное повторение движения вверх, то есть зацикливания.

Помните, что исполнителем программа воспринимается буквально.