python - 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 或任何其他玩家对一样。
一队和二队之间没有区别,而且两队的人数总是相等的。
解决方案
基本上我所做的是使用一个名为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'])
推荐阅读
- macos - 如何在 Mac 上通过 chrome 和 firefox 保存 SSL 证书?
- reactjs - 根据道具动态选择文件
- python - Raspberry Pi Flask Server 关机后无法访问
- python - 更新购物车中的商品数量无法正常工作
- linux - gunicorn.service 的单元文件、源配置文件或插件在磁盘上已更改。运行“systemctl daemon-reload”重新加载单元
- java - Wildfly 查询字符串包含 // 用单斜杠 (/) 替换其中 servlet 使用发送重定向(302 代码)
- lldb - 是否有 lldb 等效于 gdb 的“bt full”?
- github - 为什么“内容安全策略”的自定义标头在 github 上不起作用?
- chart.js - 如何使用 ng2-charts 更新圆环图的 css
- javascript - Firebase 错误:进程以代码 16 退出进程。