我们很多人都熟悉Tron游戏。您可以控制放置在网格上的“ lightcycle”。灯光周期总是向前移动(尽管您可以控制方向),并在其后面留下永久的痕迹。如果碰到一条小路,就会崩溃!
此处的目标是确定给定路径是否为有效循环,也就是说,它返回到其起始点而不会“崩溃”。为此,我们假设我们从这一点开始(0,0)
。输入形式为N2E1S2W1
,具有一系列基本方向(N
is north
,E
is east
,依此类推),每个方向后跟移动该方向的距离。在此示例中,您将旅行
N2 : North 2 to (0,2)
E1 : East 1 to (1,2)
S2 : South 2 to (1,0)
W1 : West 1 to (0,0)
如果一条路径在(0,0)
不重复访问任何其他坐标的情况下结束,则该路径被认为是有效的(它(0,0)
精确地访问了两次,一次在起点,一次在终点)。请记住,与上例相比,从(0,0)
到(0,2)
,我们也必须访问(0,1)
。
其他例子:
input -> output
N1E1S1W1 -> true
N1E1N1E1S2W2 -> true
N1S1E1W1 -> false // Visits (0,0) 3 times
N4E2S2W4S2E2 -> false // Visits (0,2) twice
N3E2S3 -> false // Does not return to (0,0)
N1S1 -> anything //I don't care how you evaluate this case
您的输出可以是任何形式,只要它为任何真实或错误值提供相同的输出即可。
输入可以采取字符串或字符列表的形式,形式为S1N2E3
...或SNNEEE
...网格大小也没有硬性限制,但假定输入不会溢出任何内容。只要代码从根本上讲是合理的,处理诸如这样的情况就不是关键N99999999999999
。
注意:您可以评估的情况下N1S1
,E1W1
,S1N1
,和W1E1
但是你想。它们在技术上是有效的路径,但它们违背了挑战的“特隆”精神。
计分
这是代码高尔夫球,所以最短的答案会成功!
N
as 1j
,E
as 1
,S
as -1j
和W
as -1
吗?
N99999999999999
N1S1
为符合您的定义,应为true,因为它达到(0, 0)
两次,(0, 1)
一次,在您的定义下有效。