给定一个圆形阵列,确定两个元素之间的最小距离的有效方法是什么?
例如从这里搬家
[0,0,0,0,0,1]
Run Code Online (Sandbox Code Playgroud)
到这里
[1,0,0,0,0,0]
Run Code Online (Sandbox Code Playgroud)
从这里开始,从外边界更方便
[0,0,0,0,0,1]
Run Code Online (Sandbox Code Playgroud)
到这里
[0,0,0,1,0,0]
Run Code Online (Sandbox Code Playgroud)
内部更方便.
我最初的想法是这样的:
sourceLocation = rotatorElements["pos"].indexOf(1);
targetLocation = rotatorElements["pos"].rotate(delta).indexOf(1);
var D = Math.abs(targetLocation - sourceLocation);
var O = Math.abs(rotatorElements["pos"].length - D);
if ((D - O == 0)) direction = 1;
else {
if (D < O) direction = -1;
else direction = 1;
}
Run Code Online (Sandbox Code Playgroud)
注意:rotate将圆形阵列旋转定义的位置数.