{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import operator\n",
    "import csv\n",
    "#constants\n",
    "k=100\n",
    "rdf=400\n",
    "\n",
    "def win_prob(yas,oas):\n",
    "    return 1/(1+10**(1/rdf*(oas-yas)))\n",
    "def new_score(oscore,yas,oas,outcome):\n",
    "    return (oscore)+k*(outcome-win_prob(yas,oas))\n",
    "\n",
    "def readFile(filepath):\n",
    "\n",
    "    with open(filepath) as csvfile:\n",
    "        lines = csv.reader(csvfile, delimiter=',', quotechar='|')\n",
    "        data = []\n",
    "        try:\n",
    "            for row in lines:\n",
    "                data.append((', '.join(row)).split(\", \"))\n",
    "        except:\n",
    "            pass\n",
    "\n",
    "    return data\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "sb=readFile('scoreboard.csv')\n",
    "teams=set([])\n",
    "for i in sb:\n",
    "    teams.add(i[2])\n",
    "    teams.add(i[3])\n",
    "    teams.add(i[4])\n",
    "    teams.add(i[5])\n",
    "    teams.add(i[6])\n",
    "    teams.add(i[7])\n",
    "list(teams)\n",
    "tsd={}\n",
    "for i in list(teams):\n",
    "    tsd[i]=500\n",
    "for i in sb:\n",
    "    ras=tsd[i[2]]+tsd[i[3]]+tsd[i[4]]\n",
    "    bas=tsd[i[5]]+tsd[i[6]]+tsd[i[7]]\n",
    "    outcome=0\n",
    "    if i[8]>i[9]:\n",
    "        outcome=1\n",
    "    elif i[9]==i[8]:\n",
    "        outcome=.5\n",
    "    for j in range(2,5,1):\n",
    "        tsd[i[j]]=new_score(tsd[i[j]],ras,bas,outcome)\n",
    "    for j in range(5,8,1):\n",
    "        tsd[i[j]]=new_score(tsd[i[j]],bas,ras,1-outcome)\n",
    "        \n",
    "rankinfs = sorted(tsd.items(), key=operator.itemgetter(1), reverse=True)    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[('5934', 833.1830859510761),\n",
       " ('48', 739.9728094005745),\n",
       " ('16', 705.9551102513088),\n",
       " ('3061', 702.9024075826381),\n",
       " ('3695', 700.1366129603175),\n",
       " ('2338', 696.932652524603),\n",
       " ('4096', 652.7038522070818),\n",
       " ('3488', 648.9766694246662),\n",
       " ('4156', 638.0881039843185),\n",
       " ('101', 626.9019952260375),\n",
       " ('6823', 613.1453027540894),\n",
       " ('930', 610.7992869961017),\n",
       " ('2062', 608.0647276785079),\n",
       " ('2830', 600.0239706519325),\n",
       " ('5847', 589.0350788865741),\n",
       " ('1736', 584.367394696335),\n",
       " ('2358', 577.5524744241919),\n",
       " ('5822', 575.4792058357157),\n",
       " ('1675', 569.9944280943398),\n",
       " ('111', 559.5150813478114),\n",
       " ('1797', 537.9429025884093),\n",
       " ('5148', 533.9623603303631),\n",
       " ('1781', 519.5609268991466),\n",
       " ('6651', 516.3195829730869),\n",
       " ('6906', 501.7408783344565),\n",
       " ('2022', 482.2765218696747),\n",
       " ('7237', 474.4616019824547),\n",
       " ('1884', 468.87487164611116),\n",
       " ('2039', 467.0990375388428),\n",
       " ('2451', 462.70812165138807),\n",
       " ('7608', 462.0188420364676),\n",
       " ('1739', 459.00590084129664),\n",
       " ('2252', 456.43201385653043),\n",
       " ('2151', 439.4118535382677),\n",
       " ('4702', 435.5729578944645),\n",
       " ('7738', 423.16353418538296),\n",
       " ('4296', 420.5085609998351),\n",
       " ('3734', 418.47615429198186),\n",
       " ('7609', 409.29347746836567),\n",
       " ('2709', 403.9793052336144),\n",
       " ('3067', 402.77020998279653),\n",
       " ('2136', 386.0798688817299),\n",
       " ('5350', 383.4109800245315),\n",
       " ('5125', 377.1609505922246),\n",
       " ('4292', 357.43188113820975),\n",
       " ('3110', 344.8643460008074),\n",
       " ('2725', 332.21429556184444),\n",
       " ('4645', 329.6452389079341),\n",
       " ('6968', 329.08368400289095),\n",
       " ('4241', 315.12115012426335),\n",
       " ('4787', 288.64374620808815),\n",
       " ('7560', 279.7779164676232),\n",
       " ('2016', 247.25607506869346)]"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "rankinfs"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}