我正在尝试编写一个程序,为一定数量的玩家创建一个循环锦标赛时间表(每个玩家都玩其他玩家)。
我想知道是否有办法只使用列表来做到这一点。我试图不使用 itertools.combinations()
如果我有一个允许您输入玩家数量并生成这些玩家列表的程序,任何人都可以想到一种方法吗?示例:4 个玩家生成列表 [1,2,3,4]
我需要程序打印:
第 1 轮:1 对 4 2 对 3
第 2 轮:1 对 3 4 对 2
第 3 轮:1 对 2 3 对 4
这是此处描述的第一个算法的简单实现。
N = 6
a = range(N)
for i in xrange(N-1):
print zip(a[:N/2], reversed(a[N/2:]))
a = a[:1] + a[-1:] + a[1:-1]
编辑:实际上,正如所指出的,它甚至适用于奇数N
。
(ORIG:这只适用N
于偶数。该链接解释了如何扩展它以支持奇数N
。)