我正在尝试编写一个程序,为一定数量的玩家创建一个循环赛锦标赛计划(每个玩家扮演其他所有玩家)。
我想知道是否有办法只使用列表来做到这一点。我试图不使用itertools.combinations()
如果我有一个允许您输入玩家数量并生成这些玩家列表的程序,有没有人能想到这样做的方法? 示例:4名玩家生成列表[1,2,3,4]
我需要打印程序:
第一轮:1比4比2比3
第2轮:1比3比4比2
第3轮:1比2比3比4
答案 0 :(得分:2)
这是here所述的第一个算法的简单实现。
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
秒。)