【发布时间】:2016-11-22 00:18:31
【问题描述】:
我将步行者的 x/y 坐标元组存储在数组 ArrayBuffet((Int, Int)) 中。
代表(0,0) 和(2,1) 之间旅程的步骤可以是((0,0), (0,1), (1,1), (2,1))、((0,0), (1,1), (2,1)) 等。
麻烦的是,我需要一种方法来测试步行者是否在绕圈行驶。
例如考虑从(0,0) 步行到(0,1),步行者的路径是((0,0), (1,0), (1,-1), (0,0), (0,1))。步行者将绕一圈行驶。
方法
def hasLoop(path: ArrayBuffer[(Int,Int)]): Boolean = {
if (path.length < 3) return false
else {
for i <- 0 to path.length - 1 {
val temp = path
temp.remove(i)
if (temp.contains(i)) return true
}
return false
}
}
如果步行者在一次旅程中多次访问某个坐标。但是,如果 walker 从 (0,0) 移动到 (0,1) 甚至到 (0,2),但随后通过 (0,1) 返回相同的路径,则不应将其视为循环。
谁能为我的isLoop 方法提供解决方案?
【问题讨论】:
-
您对循环的定义不清楚 - 如果我理解正确,当且仅当路径包含相同的 vertex 时(例如
(0,0)) 不止一次,但有多个路径(由 边 组成(例如(0,0) -> (0,1))通过该顶点?
标签: scala