Re: [问题] 遍历对战效率问题

楼主: poototo (poototo)   2023-08-03 19:52:33
参考,可再自行排除一些绝不符合条件的对战历程
====================================
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
: 像这个有更好的解决办法吗? 还是太多循环就无解? 先谢谢高手愿意热心分享了~
作者: shingai (shingai)   2023-08-07 16:07:00
3Q~高手的资料结构概念感觉很强...写法迥然不同!!

Links booklink

Contact Us: admin [ a t ] ucptt.com