weeks = range(1,11)
max_apperances = 5
import numpy as np
max_apperances_lib = 3
JUDGES = ["Hunter", "Lib", "Matthew",
"Paul", "Freddy", "Taylor",
"Griffin", "Regina", "Elizabeth", 'Guest']
cant_go = {'Hunter': [6],
'Regina': [1,3,4,5,6],
'Paul': [10],
"Lib": [],
'Matthew': [2],
'Freddy': [1,2,3,4],
'Taylor': [],
'Griffin': [],
'Elizabeth': [1],
'Guest': [1,2]
}
import datetime
def generate_tuesdays(start_date=datetime.date(2016,6,21)):
"""Generates a list of tuesdays for 10 weeks starting with start date"""
ret = {}
for week in weeks:
ret[week] = (start_date + datetime.timedelta(7 * week) - datetime.timedelta(7))
return ret
def select_judge(judges, week):
"""Returns a judge valid for the week"""
judge = np.random.choice(judges)
judge_can_go = week not in cant_go[judge]
if judge_can_go:
return judge
else:
copy = list(judges)
copy.remove(judge)
return select_judge(copy, week)
generate_tuesdays()
{1: datetime.date(2016, 6, 21), 2: datetime.date(2016, 6, 28), 3: datetime.date(2016, 7, 5), 4: datetime.date(2016, 7, 12), 5: datetime.date(2016, 7, 19), 6: datetime.date(2016, 7, 26), 7: datetime.date(2016, 8, 2), 8: datetime.date(2016, 8, 9), 9: datetime.date(2016, 8, 16), 10: datetime.date(2016, 8, 23)}
def generate_theme_round(judges, weeks):
theme_round = {}
for week in weeks:
try:
judge = select_judge(judges, week)
theme_round[week] = judge
judges.remove(judge)
except ValueError:
theme_round[week] = "Andrew"
return theme_round
judges_raw = ["Hunter", "Lib", "Matthew",
"Paul", "Freddy", "Taylor",
"Griffin", "Regina", "Elizabeth", 'Guest']
theme_round = generate_theme_round(judges_raw, weeks)
theme_round
{1: 'Lib', 2: 'Regina', 3: 'Griffin', 4: 'Matthew', 5: 'Paul', 6: 'Elizabeth', 7: 'Guest', 8: 'Taylor', 9: 'Hunter', 10: 'Andrew'}
def pick_week(judges, week):
"""Picks 4 judges for the week"""
lineup = []
while len(lineup) < 4:
judge = select_judge(judges, week)
# check if judge has theme, remove to list
if theme_round[week] == 'judge':
#print("judge has theme")
pass
if judge in lineup:
#print("judge in lineup")
pass
else:
lineup.append(judge)
return lineup
pick_week(JUDGES, 1)
['Griffin', 'Taylor', 'Matthew', 'Paul']
def make_schedule(judges, weeks, theme_round=theme_round):
schedule = {}
for week in weeks:
pick_week(judges, week))
File "<ipython-input-80-3ba926723406>", line 4 pick_week(judges, week)) ^ SyntaxError: invalid syntax
make_schedule(JUDGES, weeks)
['Hunter', 'Matthew', 'Griffin', 'Paul'] ['Regina', 'Elizabeth', 'Lib', 'Paul'] ['Taylor', 'Elizabeth', 'Hunter', 'Matthew'] ['Matthew', 'Lib', 'Taylor', 'Paul'] ['Lib', 'Paul', 'Taylor', 'Guest'] ['Taylor', 'Griffin', 'Freddy', 'Paul'] ['Freddy', 'Regina', 'Elizabeth', 'Hunter'] ['Lib', 'Guest', 'Griffin', 'Hunter'] ['Freddy', 'Hunter', 'Regina', 'Taylor'] ['Elizabeth', 'Regina', 'Freddy', 'Guest']
pick_week(JUDGES, 2)
['Paul', 'Hunter', 'Regina', 'Taylor']