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

Math 脑筋急转弯:在六边形中找到正确的旋转(顺时针/逆时针),math,geometry,Math,Geometry,假设我有一个六边形排列的数字 0 5 1 4 2 3 要从一点到另一点,我只能顺时针/逆时针穿过我的邻居 我想知道给定输入(currentPosition,targetPosition)是顺时针还是逆时针 例如,从1到3,顺时针方向更明智,因为顺时针方向需要2步(1-2-3),逆时针方向需要4步(1-0-5-4-3) 我不想做一个大的if/else构造,必须有另一种方法 到目前为止,我明显错误的解决方案是: if ( ((currentPosit

假设我有一个六边形排列的数字

     0
  5     1  
  4     2
     3
要从一点到另一点,我只能顺时针/逆时针穿过我的邻居

我想知道给定输入(currentPosition,targetPosition)是顺时针还是逆时针

例如,从1到3,顺时针方向更明智,因为顺时针方向需要2步(1-2-3),逆时针方向需要4步(1-0-5-4-3)

我不想做一个大的
if/else构造
,必须有另一种方法

到目前为止,我明显错误的解决方案是:

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

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

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

从这里开始,它相当直截了当:

if steps < 3:
    return CLOCKWISE
else if steps > 3:
    return COUNTERCLOCKWISE
else
    return DONT_CARE
如果步骤<3:
顺时针返回
否则,如果步骤>3:
逆时针返回
其他的
返回不在乎
if steps < 3:
    return CLOCKWISE
else if steps > 3:
    return COUNTERCLOCKWISE
else
    return DONT_CARE