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