岩石剪刀任意奇数元素

时间:2010-05-30 19:08:51

标签: math

如何有效地为n个元素创建摇滚剪纸游戏, 其中n是任何奇数> = 3。

换句话说,我想要n个元素的非传递完整排序 这样每个元素大于(n-1)/ 2个其他元素和每个元素 element小于(n-1)/ 2个其他元素。

2 个答案:

答案 0 :(得分:7)

假设您的商品编号为0,1,2,...,n-1。

项目i击败项目j iff 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击败列表中的所有项目。

i vs 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(胜利,失败)。
  • 这是skew symmetric matrix
  • 每行和每列都有(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.

在此示例中,可以重新标记项目以提供与上一游戏中相同的逻辑。我怀疑这一点是否一般。

答案 1 :(得分:3)

太棒了,谢谢!

作为另一种方法(受你的启发),对于下一个(n-1)/ 2个元素,k敲打k + 1(mod n-1),k + 2(mod n-1)等等。