import csv

teams = {}

def getElo(team):
    if team not in teams:
        teams[team] = 1200
    return teams[team]

def setElo(team, elo):
    teams[team] = elo

def calculateElo(fileName, kFactor):
    reader = csv.reader(open(fileName, 'r'))

    for row in reader:
        if row[3] == "Q" or row[3] == "E":
            averageRedElo  = (getElo(row[9])  + getElo(row[10]) + getElo(row[11]))/3
            averageBlueElo = (getElo(row[12]) + getElo(row[13]) + getElo(row[14]))/3

            Ea = 1/(1 + 10**((averageBlueElo - averageRedElo)/400))
            Eb = 1/(1 + 10**((averageRedElo - averageBlueElo)/400))

            if int(row[7]) > int(row[8]):
                Sa = 1
                Sb = 0
            elif int(row[8]) > int(row[7]):
                Sa = 0
                Sb = 1
            else:
                Sa = 0.5
                Sb = 0.5       

            dRa = kFactor*(Sa-Ea)
            dRb = kFactor*(Sb-Eb)

            setElo(row[9],  getElo(row[9])  + dRa)
            setElo(row[10], getElo(row[10]) + dRa)
            setElo(row[11], getElo(row[11]) + dRa)
            setElo(row[12], getElo(row[12]) + dRb)
            setElo(row[13], getElo(row[13]) + dRb)
            setElo(row[14], getElo(row[14]) + dRb)
            
calculateElo('matches_week_2_2014.csv', 24)
sortedTeams = sorted(teams, key=teams.get, reverse=True)
for team in sortedTeams:
    print(team, getElo(team))
