# from enum import Enum, auto import copy import operator CURRENT_MATCH = 35 # # class Team(Enum): # CSK = auto(), # SRH = auto(), # RCB = auto(), # MI = auto(), # KXIP = auto(), # DD = auto(), # KKR = auto(), # RR = auto() class Team: CSK = "CSK" SRH = "SRH" RCB = "RCB" MI = "MI" KXIP = "KXIP" DD = "DD" KKR = "KKR" RR = "RR" class Constants: MAX_FIXTURE = 56 points = {Team.CSK: 12, Team.SRH: 12, Team.RCB: 6, Team.MI: 6, Team.KXIP: 10, Team.DD: 6, Team.KKR: 10, Team.RR: 6} fixture = {35: (Team.CSK, Team.RCB), 36: (Team.SRH, Team.DD), 37: (Team.MI, Team.KKR), 38: (Team.KXIP, Team.RR), 39: (Team.SRH, Team.RCB), 40: (Team.RR, Team.KXIP), 41: (Team.KKR, Team.MI), 42: (Team.DD, Team.SRH), 43: (Team.RR, Team.CSK), 44: (Team.KXIP, Team.KKR), 45: (Team.DD, Team.RCB), 46: (Team.CSK, Team.SRH), 47: (Team.MI, Team.RR), 48: (Team.KXIP, Team.RCB), 49: (Team.KKR, Team.RR), 50: (Team.MI, Team.KXIP), 51: (Team.RCB, Team.SRH), 52: (Team.DD, Team.CSK), 53: (Team.RR, Team.RCB), 54: (Team.SRH, Team.KKR), 55: (Team.DD, Team.MI), 56: (Team.CSK, Team.KXIP) } c = Constants() qualify_counter = {Team.CSK: 0, Team.SRH: 0, Team.RCB: 0, Team.MI: 0, Team.KXIP: 0, Team.DD: 0, Team.KKR: 0, Team.RR: 0} total_counter = 0 def play(chain, match_id): global c # print(match_id, chain) if match_id > c.MAX_FIXTURE: #print_chain(chain) evaluate_chain(chain) #print("end") return next_match_id = match_id + 1 fix = c.fixture[match_id] chain.append(fix[0]) play(chain, next_match_id) chain.pop() chain.append(fix[1]) play(chain, next_match_id) chain.pop() def evaluate_chain(chain): global c global total_counter total_counter += 1 points_chain = copy.deepcopy(c.points) for winner in chain: points_chain[winner] += 2 # print(points_chain) # evaluate top 4 qualifying_teams = sorted(points_chain.items(), key=operator.itemgetter(1), reverse=True)[:4] for qt in qualifying_teams: qualify_counter[qt[0]] += 1 def print_chain(chain): for c in chain: # print(c.name, end=" ") print(c[0], end=" ") play([], CURRENT_MATCH) for team in qualify_counter: percent = round(100 * qualify_counter[team]/total_counter) print(f"{team} : {percent}% ({qualify_counter[team]}/{total_counter})") print("Total Simulations : ", total_counter)
Run
Reset
Share
Import
Link
Embed
Language▼
English
中文
Python Fiddle
Python Cloud IDE
Follow @python_fiddle
Browser Version Not Supported
Due to Python Fiddle's reliance on advanced JavaScript techniques, older browsers might have problems running it correctly. Please download the latest version of your favourite browser.
Chrome 10+
Firefox 4+
Safari 5+
IE 10+
Let me try anyway!
url:
Go
Python Snippet
Stackoverflow Question