Вопрос:

Рассмотрим несколько программ. В начале каждой программы робот стартует из одной и той же клетки. В каждой программе отметьте строчки, которые выполнит робот. Нас интересуют только строки с командами move_xxxx(). Если выполняя команду, робот врежется в стену, то мы будем считать, что эту команду он не выполнил (не продвинулся в нужном направлении). A if free_from_up(): move_up() move_left() C if free_from_up(): move_up() if free_from_right(): move_right() else: move_left() move_up() B move_up() if free_from_right(): move_right() move_right() move_left() D if free_from_right(): move_right() else: move_left() if free_from_up(): move_up() else: move_down()

Смотреть решения всех заданий с листа

Ответ:

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

Рассмотрим каждую программу отдельно:

  1. Программа A
    1. if free_from_up(): - условие проверяет, свободно ли пространство сверху. В данном случае, пространство сверху свободно, условие истинно.
    2. move_up() - робот перемещается вверх.
    3. move_left() - робот пытается переместиться влево. Но слева стена, поэтому команда не выполняется.
  2. Программа B
    1. move_up() - робот перемещается вверх.
    2. if free_from_right(): - условие проверяет, свободно ли пространство справа. Справа есть свободное пространство, условие истинно.
    3. move_right() - робот перемещается вправо.
    4. move_left() - робот пытается переместиться влево. Слева стена, поэтому команда не выполняется.
  3. Программа C
    1. if free_from_up(): - условие проверяет, свободно ли пространство сверху. Пространство сверху свободно, условие истинно.
    2. move_up() - робот перемещается вверх.
    3. if free_from_right(): - условие проверяет, свободно ли пространство справа. Справа есть свободное пространство, условие истинно.
    4. move_right() - робот перемещается вправо.
    5. else: - условие if free_from_right() истинно, поэтому блок else не выполняется.
    6. move_up() - робот перемещается вверх.
  4. Программа D
    1. if free_from_right(): - условие проверяет, свободно ли пространство справа. Справа есть свободное пространство, условие истинно.
    2. move_right() - робот перемещается вправо.
    3. else: - условие if free_from_right() истинно, поэтому блок else не выполняется.
    4. if free_from_up(): - условие проверяет, свободно ли пространство сверху. Пространство сверху свободно, условие истинно.
    5. move_up() - робот перемещается вверх.
    6. else: - условие if free_from_up() истинно, поэтому блок else не выполняется.

Ответ: В программе A выполнится move_up(); в программе B выполнится move_up() и move_right(); в программе C выполнится move_up(), move_right(), move_up(); в программе D выполнится move_right() и move_up().

ГДЗ по фото 📸
Подать жалобу Правообладателю