我们很多人都熟悉Tron游戏。您可以控制放置在网格上的“ lightcycle”。灯光周期总是向前移动(尽管您可以控制方向),并在其后面留下永久的痕迹。如果碰到一条小路,就会崩溃!
此处的目标是确定给定路径是否为有效循环,也就是说,它返回到其起始点而不会“崩溃”。为此,我们假设我们从这一点开始(0,0)。输入形式为N2E1S2W1,具有一系列基本方向(Nis north,Eis 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但是你想。它们在技术上是有效的路径,但它们违背了挑战的“特隆”精神。
计分
这是代码高尔夫球,所以最短的答案会成功!
Nas 1j,Eas 1,Sas -1j和Was -1吗?
N99999999999999
N1S1为符合您的定义,应为true,因为它达到(0, 0)两次,(0, 1)一次,在您的定义下有效。