Last active
April 30, 2016 03:22
-
-
Save tervay/891d714482726a20caec2867fec85e2f to your computer and use it in GitHub Desktop.
naively simulate alliance selection at 2016 frc championships based purely on OPR
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
import requests | |
from pprint import pprint | |
class Team: | |
def __init__(self, key, opr, seed, dpr): | |
self.key = key | |
self.opr = opr | |
self.seed = seed | |
self.dpr = dpr | |
def __str__(self): | |
return "%d - %d (%d)" % (self.key, self.opr, self.seed) | |
def __repr__(self): | |
return "%d - %d (%d)" % (self.key, self.opr, self.seed) | |
def get_event_info(key): | |
tba = 'https://www.thebluealliance.com/api/v2/event/2016%s' % key | |
headers = {'X-TBA-App-Id':'jht:einstein_predictor:1'} | |
ranking_req = requests.get(tba + '/rankings', headers=headers) | |
stats_req = requests.get(tba + '/stats', headers=headers) | |
rankings = [] | |
count = 0 | |
for team in ranking_req.json()[1:]: | |
count += 1 | |
rankings.append(Team(int(team[1]), stats_req.json()['oprs'][team[1]], count, stats_req.json()['dprs'][team[1]])) | |
return rankings | |
def maxopr(teams): | |
highest = teams[0] | |
for team in teams[1:]: | |
if team.opr > highest.opr: | |
highest = team | |
return highest | |
divs = ['arc', 'cars', 'carv', 'cur', 'gal', 'hop', 'new', 'tes'] | |
all_alliances = [] | |
for div in divs: | |
ranks = get_event_info(div) | |
alliances = [] | |
for seed in range(0, 8): | |
captain = ranks.pop(0) | |
pick1 = ranks[ranks.index(maxopr(ranks))] | |
ranks.remove(pick1) | |
alliances.append([captain, pick1]) | |
for seed in range(7,-1,-1): | |
pick2 = ranks[ranks.index(maxopr(ranks))] | |
ranks.remove(pick2) | |
alliances[seed].append(pick2) | |
for seed in range(0, 8): | |
pick3 = ranks[ranks.index(maxopr(ranks))] | |
ranks.remove(pick3) | |
alliances[seed].append(pick3) | |
print("%s alliances:" % div) | |
pprint(alliances) | |
all_alliances.append(alliances) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment