📜  门| GATE-CS-2006 |第 85 题(1)

📅  最后修改于: 2023-12-03 15:42:16.288000             🧑  作者: Mango

题目介绍:门 | GATE-CS-2006 | 第 85 题


题目描述:

一个小车从(0,0)出发,该小车只能沿着X和Y方向交替行驶。该车可以完成一系列指令,如下所示:

  • 向 north 移动一定距离,指令格式:N k。其中k是一个正整数,表示向北移动k个单位。
  • 向 east 移动一定距离,指令格式:E k。其中k是一个正整数,表示向东移动k个单位。
  • 向 south 移动一定距离,指令格式:S k。其中k是一个正整数,表示向南移动k个单位。
  • 向 west 移动一定距离,指令格式:W k。其中k是一个正整数,表示向西移动k个单位。

现在,小车需要从(0,0)出发,沿着路径走到(x,y)。请编写一个函数,判断是否存在一系列指令可以让小车沿着路径走到目的地。如果存在,则返回true,反之则返回false。

例如,如果我们要让小车走到目的地(2,1),则指令序列可能是:[E1, N1, W1, S1, E1]。

函数签名:
def is_valid_path(x: int, y: int, path: List[Tuple[str, int]]) -> bool:
    pass

函数接受三个参数:

  • x: int - 目的地坐标的x坐标
  • y: int - 目的地坐标的y坐标
  • path: List[Tuple[str, int]] - 指令序列,由指令字符串和移动距离组成的元组列表。例如,[("N", 1), ("E", 1), ("S", 1), ("W", 1)] 表示依次向北、东、南、西移动1个单位。

函数返回一个布尔值,表示是否有一系列指令可以让小车到达目的地。

输入/输出示例:
assert is_valid_path(2, 1, [("E", 1), ("N", 1), ("W", 1), ("S", 1), ("E", 1)]) == True
assert is_valid_path(1, 1, [("S", 1), ("W", 1), ("N", 1)]) == False