Created
January 2, 2023 10:49
-
-
Save tzot/ded70a03bdc0d670d3e3f1228e9044f0 to your computer and use it in GitHub Desktop.
Κλήρωση πρωταθλήματος foosball StartTech 2023
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/local/bin/python -O | |
# championship | |
import random | |
import itertools as it | |
TEAMS= ( | |
'Γιαννίκος Αντοχής', | |
'Κουράγιο Βαγιεκάνο', | |
'2 χέρια και κάτι', | |
'Pinballers', | |
'Παπαναναθηναϊκός', | |
'Taleporians', | |
'MANασου CITY', | |
'Αβάσταχτοι', | |
'ΜαΜά Δες Χωρίς Χέρια', | |
'AntiSleepers', | |
'Ασύμπαιχτοι', | |
'SAS', | |
) | |
DAY_OFF= '∅' | |
def prepare_championship(): | |
all_teams= list(TEAMS) | |
if len(all_teams) & 1: | |
all_teams.append(DAY_OFF) | |
games_per_day= range(len(all_teams)>>1) | |
# days η λίστα των αγωνιστικών | |
days= [] | |
random.shuffle(all_teams) | |
for day_no in range(len(all_teams)-1): | |
day_games= []; days.append(day_games) | |
for i in games_per_day: | |
pair= all_teams[i], all_teams[-1-i], | |
if pair[0] != DAY_OFF != pair[1]: | |
rank= random.randrange(512) | |
if random.randrange(2): | |
pair= pair[::-1] | |
else: | |
rank= -1 | |
if pair[0] == DAY_OFF: | |
pair= pair[::-1] | |
day_games.append((rank, pair)) | |
all_teams.append(all_teams.pop(1)) | |
for day2 in days[:]: | |
days.append([(_, p[::-1]) for _, p in day2]) | |
with open('/tmp/fb2023.tsv','w') as fpo: | |
for index, day in enumerate(days, 1): | |
fpo.write(f"Αγωνιστική {index}\n") | |
day.sort(reverse=True) | |
for _, pair in day: | |
print(pair) | |
try: fpo.write('\t'.join(pair) + '\n\n') | |
except TypeError: print(day); raise RuntimeError("task failed successfully") | |
if __name__ == "__main__": | |
prepare_championship() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment