Число влево / вправо на кости? - PullRequest
2 голосов
/ 26 декабря 2010

Мне было интересно, есть ли формула / трюк для вычисления числа справа или слева на стандартном шестигранном кубике, если вы знаете, какое число сверху, а какое лицом к вам.

Это нужно для решения проблемы, но мне не хочется перечислять все 24 возможности в выражении if ...:)

Ответы [ 4 ]

6 голосов
/ 26 декабря 2010

Нет 24 возможностей.

Из Википедия :

сумма чисел на противоположных лица семь.

Итак, как вы уже знаете два числа, осталось 4 варианта.

Я не уверен, что вы имели в виду "сверху" и "лицом к вам", но я думаю, что вы имели в виду два соседних лица, так что осталось только 2 варианта, как вы знаете, там также есть номера противоположных лиц и эти две возможности отличаются только двумя числами: слева / справа или справа / слева).

Так, например, используя развернутые кости, у вас есть «1» сверху, «2» лицом к вам:

 X
X1X
 2
 X

Теперь вы знаете, что противоположными лицами будут «6» (внизу) и «5» (обращенные от вас):

 5
X1X
 2
 6

Итак, есть оба варианта:

 5   5
314 413
 2   2
 6   6

Остается только одна возможность, если вы знаете, является ли ваш куб «левшой» или «правшой» (опять же, Wikipedia ):

Это ограничение оставляет еще один выбор абстрактного дизайна: лица представляя 1, 2 и 3 соответственно может быть размещен либо по часовой стрелке, либо приказ против часовой стрелки об этом вершина. Если 1, 2 и 3 лица бегут против часовой стрелки вокруг их общего вершина, кубик называется «Правая рука»; если они бегут по часовой стрелке это называется "левша". стандарт современные западные кости правши, в то время как китайские кости часто левша

Таким образом, для приведенного выше примера левый - это кубик "левой рукой", а правый - кубик "правой руки".

4 голосов
/ 26 декабря 2010

Противоположные стороны матрицы всегда складываются до 7 (по крайней мере, так принято).

По процессу исключения вы можете сказать, какой будет "невидимая" пара:

  • 1/6
  • 2/5
  • 3/4 ​​* 1 010 *

Итак, для каждой пары выше, если вы видите число из него, удалите его. Оставшаяся пара - это та, которую вы ищете.

Поскольку нет способа определить «руку» кристалла, невозможно сказать, какая из пары будет справа, а какая слева.

1 голос
/ 26 декабря 2010

Понятия не имею, почему это работает, но:

Для каждой пары (верх / облицовка), конечно, есть только две возможности, так как и верхнее значение, и значение облицовки исключают себя, и это противоположно левому и / или правому: например, если 1 находится сверху и 2 стоит перед вами, тогда слева и справа должны быть либо 3, либо 4 ...

Таким образом, для каждой комбинации, если сумма значений нечетная и меньше 7, или даже больше 7, нижнее из двух возможных значений находится слева, а более высокое - справа.

.. и наоборот

Поскольку я нахожусь в Америке, я полагаю, что это правило предназначено для кубка "правой рукой", отмените его для кубика для левой руки.

0 голосов
/ 26 декабря 2010

Программно вы можете сделать это довольно легко. Возможно, это немного излишне (потому что вы можете использовать оператор 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
      }
   }
}

Затем вы можете написать метод, который даст вам возможные значения для вашего ответа, проверив кости и значения слева и справа от него.

...