如何有效地为n个元素创建剪刀石头布游戏,
其中n是任何大于等于3的奇数。
换句话说,我想要n个元素的非传递式完整排序
这样每个元素都大于(n-1)/2个其他元素,并且每个元素
元素小于(n-1)/2个其他元素。
最佳答案
假设您的商品编号为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 -
这不是唯一的可能性,但可能是最简单的。您可以构建任何遵循以下规则的矩阵:
这是另一个更复杂的示例:
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拍2和3。
1击败0和2。
2拍3和4。
3拍1和4
4拍0和1。
在此示例中,可以重新标记商品以提供与先前游戏相同的逻辑。我怀疑总体上如此。