Робот находится где-то в прямоугольнике. Он должен сделать один шаг в первом найденном свободном направлении (где нет стенки). Проверять направления надо в таком порядке: сверху, справа, снизу, слева.
Ответ нейросети
20 марта 2025 11:19
Для решения задачи о перемещении робота в прямоугольнике, давайте разберёмся, как можно организовать эту логику по шагам, с учётом указанных направлений (сначала вверх, затем вправо, потом вниз и влево).
Шаг 1: Определение положения робота
Представьте, что у вас есть двумерный массив, который представляет прямоугольник. Например, можно использовать 0 для обозначения свободного места и 1 для стенки.
rectangle = [
[0, 1, 0, 0],
[0, 0, 1, 0],
[1, 0, 0, 0],
]
robot_position = (1, 0) # координаты робота (строка, столбец)
Шаг 2: Проверка направлений
Теперь мы должны проверить, есть ли свободное пространство в направлениях, указанных в задаче. Нам нужно определить, как находятся индексные значения для проверки каждого направления.
- Вверх (сдвиг по строкам -1)
- Вправо (сдвиг по столбцам +1)
- Вниз (сдвиг по строкам +1)
- Влево (сдвиг по столбцам -1)
Шаг 3: Реализация логики перемещения
Создадим функцию, которая будет проверять каждое направление. Если в каком-то направлении есть свободное место, робот сделает шаг в этом направлении.
def move_robot(rectangle, robot_position):
row, col = robot_position
directions = [(-1, 0), (0, 1), (1, 0), (0, -1)] # (строка, столбец) для вверх, вправо, вниз, влево
for d in directions:
new_row = row + d[0]
new_col = col + d[1]
# Проверяем, не выходит ли новый индекс за границы массива и свободно ли место
if 0 <= new_row < len(rectangle) and 0 <= new_col < len(rectangle[0]) and rectangle[new_row][new_col] == 0:
return (new_row, new_col) # Возвращаем новое положение робота
return robot_position # Если нет свободных мест, остаёмся на месте
# Пример использования:
new_position = move_robot(rectangle, robot_position)
print(new_position) # Выводим новое положение робота
Пояснение к коду
- Мы создаем список направлений, используя координаты изменения для каждого направления.
- Проходим по каждому направлению и вычисляем новое положение робота.
- Проверяем, есть ли возможность двигаться в новое положение (не выходит за пределы массива и не на стенку).
- Если нашёлся подходящий шаг, возвращаем новые координаты робота; если нет, возвращаем старые.
Заключение
Таким образом, мы создали логику, которая позволяет роботу перемещаться в заданных направлениях, избегая стен. Проверка происходит в определённом порядке, что соответствует требованиям задачи.
Понравился ответ?
Задай свой вопрос
Напиши любую задачу или вопрос, а нейросеть её решит



