我正在尝试编写一个程序,为一定数量的玩家创建循环赛时间表(每个玩家与其他玩家比赛)。
我想知道是否有办法仅使用列表来做到这一点。我试图不使用 itertools.combinations()
如果我有一个程序可以让您输入玩家数量并生成这些玩家的列表,有人能想出一种方法来做到这一点吗? 示例:4 个玩家生成列表 [1,2,3,4]
我需要打印程序:
第一轮:1 vs. 4 2 vs. 3
第二轮:1 vs. 3 4 vs. 2
第三轮:1 vs. 2 3 vs. 4
最佳答案
这是描述的第一个算法的简单实现 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
。)
关于python 匹配列表中的项目以创建新列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15371576/