Skip to content

Instantly share code, notes, and snippets.

@tzot
Created January 2, 2023 10:49
Show Gist options
  • Save tzot/ded70a03bdc0d670d3e3f1228e9044f0 to your computer and use it in GitHub Desktop.
Save tzot/ded70a03bdc0d670d3e3f1228e9044f0 to your computer and use it in GitHub Desktop.
Κλήρωση πρωταθλήματος foosball StartTech 2023
#!/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