1 回答
TA贡献2021条经验 获得超8个赞
24 个旋转中的每一个都可以通过哪个面朝上(6 种可能性)和哪个面朝左(每个向上面 4 种可能性)来唯一识别。
确定朝上面的外部循环,然后确定朝左面的内部循环似乎很容易。鉴于您的旋转调用所采用的参数,我可能会这样做:
// Rotating around these axes in sequence will bring each face in turn
// to the top
private static GameObject.AXIS ROTATION_PATH = new GameObject.AXIS[] {
GameObject.AXIS.X_AXIS,
GameObject.AXIS.X_AXIS,
GameObject.AXIS.Z_AXIS,
GameObject.AXIS.X_AXIS,
GameObject.AXIS.X_AXIS,
GameObject.AXIS.Z_AXIS
};
public static int getPossibleSolutionCount(Map<PieceIndex, Piece> pieces)
{
int count = 0;
for (GameObject.AXIS path_axis: ROTATION_PATH)
{
for (int y = 0; y < 4; y++)
{
for (Solution s : solutions)
{
if (s.isDerivedFrom(pieces))
{
count++;
}
}
pieces.values().forEach(piece -> piece.rotate(GameObject.Axis.Y_AXIS));
}
pieces.values().forEach(piece -> piece.rotate(path_axis));
}
return count;
}
希望你看到它应该如何工作。我对你的轴指向的方向和旋转的方向做了假设,所以如果 ROTATION_PATH 没有为你做它应该做的事情,那么相应地调整它。
添加回答
举报