我想知道是否有一个公式/技巧来计算标准 6 面骰子的右边或左边的数字,如果你知道哪个数字在上面,哪个数字面向你。
需要它来解决问题,但我不想在 if 语句中列出所有 24 种可能性...... :)
没有24种可能性。
来自维基百科:
对面的数字之和是七。
因此,您已经知道两个数字,剩下 4 种可能性。
我不确定你所说的“在顶部”和“面对你”是什么意思,但我认为你的意思是这里有两张邻居的脸,所以你知道的只有两种可能性可能性仅因左/右或右/左这两个数字不同)。
因此,例如,使用展开的骰子,您的顶部有“1”,“2”面向您:
X
X1X
2
X
您现在知道相反的面将是“6”(底部)和“5”(背对您):
5
X1X
2
6
所以有这两种可能性:
5 5
314 413
2 2
6 6
当您知道您的骰子是“左撇子”还是“右撇子”时,只剩下一种可能性(同样,维基百科):
这个约束留下了一个更抽象的设计选择:分别代表 1、2 和 3 的面可以围绕该顶点按顺时针或逆时针顺序放置。如果 1、2 和 3 面围绕它们的公共顶点逆时针运行,则骰子称为“右撇子”;如果它们顺时针运行,则称为“左撇子”。标准的现代西方骰子是右撇子,而中国骰子通常是左撇子
因此,对于上面的示例,左侧是“左手”骰子,右侧是“右手”骰子。
骰子的对面总和为 7(至少,这是惯例)。
通过消除过程,您可以知道“隐形”对是什么:
因此,对于上面的每一对,如果您可以从中看到一个数字,请将其删除。剩下的一对就是你要找的那个。
由于无法确定骰子的“手性”,因此无法判断哪一对将在右侧,哪个在左侧。
我不知道为什么会这样,但是:
对于每一对(顶部/面向),当然只有两种可能性,因为顶部值和面向值都各自消除,并且与左或右相反:例如,如果 1 在顶部,并且 a 2 面向你,那么左右必须是 3 或 4...
因此,对于每个组合,如果值的总和为奇数且小于 7,或偶数且大于 7,则两个可能值中较低的在左侧,较高的在右侧。
.. 反之亦然
就像我在美国一样,我想这条规则适用于“右手”骰子,反之则适用于左手骰子。
以编程方式,您可以很容易地做到这一点。这可能有点矫枉过正(因为您可以使用 if 语句),您还可以创建一个类,例如
public class Dice {
private DiceFace[] sides = new DiceFace[]{DiceFace.ONE, DiceFace.TWO, DiceFace.THREE, DiceFace.FOUR, DiceFace.FIVE, DiceFace.SIX};
class DiceFace {
// set the face number and connecting faces...the below figures are wrong, I don't have a set of dice to check agains
static final DiceFace ONE = new DiceFace(1, 2, 3, 4, 5);
private int face;
private int northFace;
private int southFace;
private int eastFace;
private int westFace;
public DiceFace(int face, int northFace, int southFace, int eastFace, int westFace) {
// set the values
}
}
}
然后,您可以编写一个方法,通过检查骰子及其左右两侧的值来为您的答案提供可能的值。