Программа курса:
Разбор задачи: Возвращение робота в исходное состояние
Предложенный нами код решения:
def judge_circle(moves):
"""
:param moves: строка с последовательностью движений ('R', 'L', 'U', 'D')
:return: True, если робот вернулся в точку (0, 0), иначе False
"""
# Начальная позиция
x, y = 0, 0
# Обработка каждого движения
for move in moves:
if move == 'R':
x += 1
elif move == 'L':
x -= 1
elif move == 'U':
y += 1
elif move == 'D':
y -= 1
# Возврат результата
return x == 0 and y == 0Объявление функции
def judge_circle(moves):Функция
judge_circleпринимает один параметр:moves— строка, содержащая последовательность движений. Допустимые символы:'R'(вправо),'L'(влево),'U'(вверх),'D'(вниз).
Инициализация начальной позиции
x, y = 0, 0Переменные
xиyзадают начальную позицию робота на плоскости (0,0)(0, 0)(0,0).Обработка движений
for move in moves: if move == 'R': x += 1 elif move == 'L': x -= 1 elif move == 'U': y += 1 elif move == 'D': y -= 1- Цикл
forпроходит по каждому символу строкиmoves. - Для каждого символа выполняется одно из следующих действий:
'R': увеличиваем xxx на 1 (движение вправо).'L': уменьшаем xxx на 1 (движение влево).'U': увеличиваем yyy на 1 (движение вверх).'D': уменьшаем yyy на 1 (движение вниз).
- Цикл
Проверка конечной позиции
return x == 0 and y == 0После завершения цикла проверяется, равны ли xxx и yyy нулю. Если оба условия выполняются, это означает, что робот вернулся в начальную точку.
Пример работы функции
Вход: moves = "UD"
- Начальная позиция: (x,y)=(0,0)(x, y) = (0, 0)(x,y)=(0,0)
- Шаги:
'U': y=1y = 1y=1, текущая позиция (0,1)(0, 1)(0,1)'D': y=0y = 0y=0, текущая позиция (0,0)(0, 0)(0,0)
- Конечная позиция: (0,0)(0, 0)(0,0), возвращаем
True.
Вход: moves = "LL"
- Начальная позиция: (x,y)=(0,0)(x, y) = (0, 0)(x,y)=(0,0)
- Шаги:
'L': x=−1x = -1x=−1, текущая позиция (−1,0)(-1, 0)(−1,0)'L': x=−2x = -2x=−2, текущая позиция (−2,0)(-2, 0)(−2,0)
- Конечная позиция: (−2,0)(-2, 0)(−2,0), возвращаем
False.
Вы должны Войти или Зарегистрироваться чтобы оставлять комментарии