想象一下,我的数字是以六边形排列的。
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
}
答案 0 :(得分:2)
从确定顺时针方向所需的步数开始(您可以选择逆时针计数,但我会在这里顺时针使用):
steps = (6 + end - start) % 6
从这里开始,它非常直接:
if steps < 3:
return CLOCKWISE
else if steps > 3:
return COUNTERCLOCKWISE
else
return DONT_CARE