ウォーカーの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
}
}
歩行者が単一の旅に複数回訪問座標場合、方法。しかし、歩行者が(0,0)
から(0,1)
、さらには(0,2)
に移動した後、同じパスを(0,1)
経由で返しても、それはループとして見なすべきではありません。
誰も私のisLoop
方法の解決策を提供できますか?
ループのあなたの定義は明確ではない - 私はそれを正しく理解している場合、パスがループを持っています同じ_vertex_(例えば '(0,0)')を複数回含みますが、_edges_(例えば '(0,0) - >(0,1) ')を返しますか? –