Rock Paper Scissors для произвольного нечетного числа элементов - PullRequest
8 голосов
/ 30 мая 2010

Как эффективно создать игру «камень-ножницы-бумага» для n элементов, где n - любое нечетное число> = 3.

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

Ответы [ 2 ]

8 голосов
/ 30 мая 2010

Предположим, что ваши предметы пронумерованы 0,1,2, ..., n-1.

Предмет, который превосходит предмет j, если i - j (mod n) > (n-1)/2.

Другими словами, вы можете вращать список так, чтобы выбранный вами элемент находился в середине списка:

i - (n-1) / 2, ..., i-2, i-1, i, i+1, i+2, ..., i + (n-1) / 2

Затем предмет, который я бью все предметы под ним в списке.

Матрица i против j будет выглядеть так:

  0 1 2 3 4
0 - L L W W
1 W - L L W
2 W W - L L
3 L W W - L
4 L L W W -

Это не единственная возможность, но, вероятно, самая простая. Вы можете построить любую матрицу, которая подчиняется этим правилам:

  • Все значения на диагонали равны нулю.
  • Другие значения: 1 или -1 (выиграть, проиграть).
  • Это косо симметричная матрица .
  • У него ровно (n-1) / 2 выигрыша и проигрыша в каждой строке и столбце.

Вот еще один более сложный пример:

  0 1 2 3 4
0 - L W W L
1 W - W L L
2 L L - W W
3 L W L - W
4 W W L L -

Или сформулирован по-другому:

0 beats 2 and 3.
1 beats 0 and 2.
2 beats 3 and 4.
3 beats 1 and 4.
4 beats 0 and 1.

В этом примере может быть возможно перемаркировать предметы, чтобы придать ту же логику, что и в предыдущей игре. Я сомневаюсь, что в целом это так.

3 голосов
/ 30 мая 2010

Фантастика, спасибо!

В качестве другого подхода (вдохновленного вашим) k бьет k + 1 (мод n-1), k + 2 (мод n-1) и т. Д. ... для следующих (n-1) / 2 элементов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...