Файл: Выполнение алгоритмов для исполнителя.doc

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 04.12.2023

Просмотров: 2368

Скачиваний: 17

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.



  1. итак, условию удовлетворяет только одна клетка – F4

  2. таким образом, правильный ответ – 1.

Возможные ловушки и проблемы:

  • вариантов может быть достаточно много, важно не пропустить ни один из них

  • можно попытаться выполнить алгоритм для каждой клетки лабиринта, но это займет много времени; поэтому лучше ограничиться только клетками-кандидатами

  • нужно правильно определить свойства, по которым клетку можно считать «кандидатом»

  • можно не заметить стенку и таким образом получить лишнее решение

Еще пример задания:





















6



















5



















4



















3



















2



















1

A

B

C

D

E

F



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

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

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

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

слева свободно справа свободно
Цикл ПОКА <условие> команда выполняется, пока условие истинно, иначе происходит переход на следующую строку. Сколько клеток приведенного лабиринта соответствуют требованию, что, выполнив предложенную ниже программу, РОБОТ уцелеет (не врежется в стену) и остановится в той же клетке, с которой он начал движение?

1) 1 2) 2 3) 3 4) 0

НАЧАЛО

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



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

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

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

КОНЕЦ



















































































































































Решение:

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

  2. рассмотрим первый цикл:

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

понятно, что при движении вверх РОБОТ остановится в первой же клетке
, где слева будет стена

  1. рассуждая аналогично, находим, что во втором цикле при движении вправо РОБОТ останавливается в клетке, где есть стена сверху; в третьем цикле (движение вниз) РОБОТ останавливается в клетке, где есть стена справа;

  2. наконец, в четвертом цикле РОБОТ останавливается в клетке, где есть стена снизу; при этом он должен попасть обратно в исходную клетку, обозначенную на рисунке красной точкой;

  3. кроме этих четырех стенок, необходимо, чтобы коридор, выделенный на рисунке зеленым фоном, был свободен для прохода, иначе РОБОТ врежется в стенку

  4. теперь отметим на карте все клетки-кандидаты, где снизу есть стена:




















6


















5



















4


















3


















2













1

A

B

C

D

E

F






  1. при движении из клеток B5, D1, E1, E6, F1 и F3 РОБОТ врежется в стенку, потому что слева стены нет и условие «слева свободно» всегда истинно:


















    6


















    5



















    4


















    3


















    2













    1

    A

    B

    C

    D

    E

    F




  2. начав движение с клетки A1, C1 или C2, РОБОТ также врезается в стенку и разрушается:




















6



















5



















4



















3


















2
















1

A

B

C

D

E

F







  1. и только путь, начатый в клетке B1, приводит РОБОТА обратно в точку старта:



















6



















5



















4



















3



















2


















1

A

B

C

D

E

F