我正在试着写一个程序,为一定数量的玩家创建一个循环赛时间表(每个玩家与其他玩家比赛)。
我想知道是否有一种方法可以只使用列表来做到这一点。我尽量不使用itertools.combinations()
如果我有一个程序,允许你输入玩家的数量并生成这些玩家的列表,有人能想出一种方法来做到这一点吗?示例:4人生成列表1,2,3,4
我需要这个程序打印:
第一轮:1对4 2对3
第二轮:1对3 4对2
第三轮:1对2 3对4
发布于 2013-03-13 04:51:57
下面是描述的第一个算法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
为even时才有效。该链接解释了如何扩展它以支持奇数N
。)
https://stackoverflow.com/questions/15371576
复制相似问题