Разбор задачи: Возвращение робота в исходное состояние

Предложенный нами код решения: 

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
  1. Объявление функции

    def judge_circle(moves):
    

    Функция judge_circle принимает один параметр:

    • moves — строка, содержащая последовательность движений. Допустимые символы: 'R' (вправо), 'L' (влево), 'U' (вверх), 'D' (вниз).
  2. Инициализация начальной позиции

    x, y = 0, 0
    

    Переменные x и y задают начальную позицию робота на плоскости (0,0)(0, 0)(0,0).

  3. Обработка движений

    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 (движение вниз).
  4. Проверка конечной позиции

    return x == 0 and y == 0
    

    После завершения цикла проверяется, равны ли xxx и yyy нулю. Если оба условия выполняются, это означает, что робот вернулся в начальную точку.

Пример работы функции

Вход: moves = "UD"

  • Начальная позиция: (x,y)=(0,0)(x, y) = (0, 0)(x,y)=(0,0)
  • Шаги:
    1. 'U': y=1y = 1y=1, текущая позиция (0,1)(0, 1)(0,1)
    2. '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)
  • Шаги:
    1. 'L': x=−1x = -1x=−1, текущая позиция (−1,0)(-1, 0)(−1,0)
    2. 'L': x=−2x = -2x=−2, текущая позиция (−2,0)(-2, 0)(−2,0)
  • Конечная позиция: (−2,0)(-2, 0)(−2,0), возвращаем False.

 



Вы должны Войти или Зарегистрироваться чтобы оставлять комментарии