脑筋急转弯:在六边形中找到正确的旋转(顺时针/逆时针)

时间:2018-06-16 18:17:10

标签: math geometry

想象一下,我的数字是以六边形排列的。

     0
  5     1  
  4     2
     3

从一个点到另一个点,我只能顺时针/逆时针穿过我的邻居。

我想知道在给定输入(currentPosition,targetPosition)的情况下是顺时针还是逆时针方向

例如,从1到3,顺时针方向会更聪明,因为顺时针方向(1-2-3)和4步(1-0-5-4-3)逆时针方向需要2步。 / p>

我不想做大if/else construct,还有另一种方式。

到目前为止我的错误解决方案:

if ( ((currentPosition + 3) % 6) == nextStation) {
        //both - that part is correct - 
        return Direction.BOTH

} else if ( ??? ) {
    //CL
    return Direction.CLOCKWISE
} else {
    //CCL
    return Direction.COUNTERCLOCKWISE
}

1 个答案:

答案 0 :(得分:2)

从确定顺时针方向所需的步数开始(您可以选择逆时针计数,但我会在这里顺时针使用):

steps = (6 + end - start) % 6

从这里开始,它非常直接:

if steps < 3:
    return CLOCKWISE
else if steps > 3:
    return COUNTERCLOCKWISE
else
    return DONT_CARE