我有一张桌子,上面有一组球队,他们需要和对方打多少场比赛,如下所示:
python - 需要帮助,根据比赛表创建联赛时间表-LMLPHP
在这张表中,a、b、c和d队各打两次,另一组队各打一次,每组共10场我需要建立一个每周的比赛时间表(例如:第一周a对b,c对d,等等),这样所有的比赛都将在10周内进行,每支球队每周都要进行一场比赛换一种说法,我需要知道每支球队每周打哪支球队10周,这样每支球队就可以打10场比赛没有家可以考虑。
编辑:还有一点需要注意的是,每支球队每周都会在同一天比赛,所以基本上是将这些比赛安排在10天内,每支球队在10天内各打一场比赛。
我很难找到一个好的方法来实现这一点,所以如果有人对算法/包有任何建议,或者可以给我指一些资源(我的首选语言是python),我会非常感激。
提前谢谢!

最佳答案

一个非常简单的方法是生成组合,然后添加double,如下所示:

from itertools import combinations

teams = "abcdefgh"

possible_games = combinations(teams, 2)

doubles = {"a":("b", "c", "d"), "b":("c", "d"), "c":("d",), "e":("f", "g", "h"), "f":("g", "h"), "g":("h",)}
all_doubles = {(k, v) for k, values in doubles.iteritems() for v in values}
print all_doubles

games = list(possible_games)
games += [g for g in games if g in all_doubles]
print games, len(games)

这就留下了一个关于实际日程安排的问题-你需要确保(我相信)例如A队不会连续7天比赛,然后一周无所事事,但我认为以上应该是一个好的开始。

关于python - 需要帮助,根据比赛表创建联赛时间表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51940548/

10-12 02:27