作者poototo (poototo)
标题Re: [问题] 遍历对战效率问题
时间Thu Aug 3 19:52:33 2023
参考,可再自行排除一些绝不符合条件的对战历程
====================================
from itertools import combinations, product
#
teams = "ABCDEF" # 队伍名称
fights = list(combinations(teams, 2)) # 对战组合
results = ["201"] * len(fights) # 每种对战组合的三种结果 2 win,0 lose,1 tie
for rs in product(*results): # rs:所有对战组合结果的一次历程,共3^对战组合数
scores = dict.fromkeys(teams, 0) # 初始化队伍积分
for r, f in zip(rs, fights):
scores[f[0]] += int(r)
scores[f[1]] += 2 - int(r)
if sorted(scores.values()).index(scores["A"]) >= 4: # 积分筛选
print(rs, scores)
======================================
※ 引述《shingai (吸收正能量)》之铭言:
: 如原题,算分享(请鞭小力点,小弟真的不是太熟语法),
: 版上高手若有闲暇之余,再行补充或赐教
: 改六队试试看变成如下写法:
: https://pastebin.com/Yv51vsrY
: 後续我是想写个函式,丢入输出list forms,D,E,F排名最後三名的时候,第三名不论
: 是A,还是B,还是C,计算出第三名的最小积分值
: 但目前没有好办法@@
: 补充:
: 为何会改六队,主要原因是回圈数太多,jupyter回应我
: SyntaxError: too many statically nested blocks
: 像这个有更好的解决办法吗? 还是太多回圈就无解? 先谢谢高手愿意热心分享了~
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.33.112.112 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1691063556.A.0CE.html
※ 编辑: poototo (123.193.62.50 台湾), 08/05/2023 23:01:58
1F:→ shingai: 3Q~高手的资料结构概念感觉很强...写法迥然不同!! 08/07 16:07