Python算法生成一组团队,其中玩家与其他给定玩家的次数相等

2024-09-25 06:29:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望编写一个python程序,将n(许多玩家)作为输入,并将他们分成两个大小相等的团队,时间为w(周),这样每个玩家和任何其他给定的玩家在一起的时间相等

例如,6名球员在4周内生成4个团队配对((1,2,3)(4,5,6),(1,3,5),(2,4,6),(1,5,6),(2,3,4),(1,4,6),(2,3,5)),使得1与2的比例尽可能相等,就像1与5或任何其他球员的比例一样

第一队和第二队之间没有区别,两支队伍的规模总是相等的


Tags: 程序时间玩家团队比例规模球员区别
1条回答
网友
1楼 · 发布于 2024-09-25 06:29:34

基本上,我所做的是使用一个名为itertools的库来计算团队的所有排列,并检查它们是否已经被选中。如果你有任何问题,尽管问



list_of_players = ["Mark", "Willy", "Josh", "Rob"]
N = len(list_of_players)
good = []
all = []
for perm in list(permutations(list_of_players)):
    if sorted(perm[:N//2]) not in all and sorted(perm[N // 2:]) not in all:
        good.append(tuple([sorted(perm[:N // 2]), sorted(perm[N // 2:])]))
        all.append(sorted(perm[:N // 2]))
        all.append(sorted(perm[N // 2:]))

for i in range(len(good)):
    print("week:",i+1,good[i])

输出:

week: 1 (['Mark', 'Willy'], ['Josh', 'Rob'])
week: 2 (['Josh', 'Mark'], ['Rob', 'Willy'])
week: 3 (['Mark', 'Rob'], ['Josh', 'Willy'])

相关问题 更多 >