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