Skip to content

Instantly share code, notes, and snippets.

@abcdabcd987
Created December 6, 2017 05:23
Show Gist options
  • Save abcdabcd987/e9624069208d59f95dbc13890ae9aa43 to your computer and use it in GitHub Desktop.
Save abcdabcd987/e9624069208d59f95dbc13890ae9aa43 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [],
"source": [
"%matplotlib inline\n",
"import psycopg2\n",
"import psycopg2.extras\n",
"import re\n",
"import datetime\n",
"import heapq\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"from matplotlib.dates import MONDAY, MonthLocator, WeekdayLocator, DateFormatter\n",
"from tqdm import *"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"conn = psycopg2.connect('dbname=online_judge user=abcdabcd987', cursor_factory=psycopg2.extras.DictCursor)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Weekly Submission"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "48053a0633b84f55a780e5406235a702",
"version_major": 2,
"version_minor": 0
},
"text/html": [
"<p>Failed to display Jupyter Widget of type <code>HBox</code>.</p>\n",
"<p>\n",
" If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n",
" that the widgets JavaScript is still loading. If this message persists, it\n",
" likely means that the widgets JavaScript library is either not installed or\n",
" not enabled. See the <a href=\"https://ipywidgets.readthedocs.io/en/stable/user_install.html\">Jupyter\n",
" Widgets Documentation</a> for setup instructions.\n",
"</p>\n",
"<p>\n",
" If you're reading this message in another frontend (for example, a static\n",
" rendering on GitHub or <a href=\"https://nbviewer.jupyter.org/\">NBViewer</a>),\n",
" it may mean that your frontend doesn't currently support widgets.\n",
"</p>\n"
],
"text/plain": [
"HBox(children=(IntProgress(value=1, bar_style='info', max=1), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n"
]
}
],
"source": [
"with conn:\n",
" with conn.cursor('cur') as cur:\n",
" xs, ys = [], []\n",
" cur.execute('SELECT * FROM records ORDER BY submit_datetime ASC')\n",
" x, y = datetime.date.min, 0\n",
" x_week = x.isocalendar()[1]\n",
" for row in tqdm_notebook(cur):\n",
" date = row['submit_datetime'].date()\n",
" week = date.isocalendar()[1]\n",
" if x_week == week:\n",
" y += 1\n",
" else:\n",
" xs.append(x)\n",
" ys.append(y)\n",
" x, y, x_week = date, 1, week\n",
" xs.append(x)\n",
" ys.append(y)\n",
" xs, ys = xs[1:], ys[1:]"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n/A+XfWL1KTdPoAAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x1122f3eb8>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"minor = MonthLocator(range(1,13), bymonthday=1, interval=1)\n",
"months = MonthLocator(range(1,13), bymonthday=1, interval=6)\n",
"monthsFmt = DateFormatter(\"%b '%y\")\n",
"fig, ax = plt.subplots()\n",
"ax.set_title('Weekly Submission')\n",
"ax.plot_date(xs, ys, '-', linewidth=0.5)\n",
"ax.xaxis.set_major_locator(months)\n",
"ax.xaxis.set_major_formatter(monthsFmt)\n",
"ax.xaxis.set_minor_locator(minor)\n",
"ax.autoscale_view()\n",
"ax.grid(True)\n",
"fig.autofmt_xdate()\n",
"plt.savefig('weekly-submit.pdf')\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Maximum Exam Wait Time"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [],
"source": [
"def run_time(judge_message):\n",
" return sum(map(int, re.findall('(\\d+)ms', judge_message))) / 1000"
]
},
{
"cell_type": "code",
"execution_count": 66,
"metadata": {},
"outputs": [],
"source": [
"def exam_wait_times(num_judge):\n",
" wait_times = []\n",
" with conn:\n",
" with conn.cursor('report') as report_cur:\n",
" report_cur.execute('SELECT * FROM reports WHERE visible=1')\n",
" for report in tqdm_notebook(report_cur):\n",
" title = report['title']\n",
" st, ed = report['start_datetime'], report['end_datetime']\n",
" wait_time = 0\n",
" queue = [0] * num_judge\n",
" with conn.cursor('submit') as submit_cur:\n",
" submit_cur.execute('SELECT * FROM records WHERE submit_datetime BETWEEN %s AND %s ORDER BY submit_datetime ASC', (st, ed))\n",
" for submit in submit_cur:\n",
" timestamp = submit['submit_datetime'].timestamp()\n",
" runtime = run_time(submit['judge_message'])\n",
" first_judge = heapq.heappop(queue)\n",
" wait_time = max(wait_time, first_judge - timestamp)\n",
" heapq.heappush(queue, max(first_judge, timestamp) + runtime + 4)\n",
" wait_times.append((wait_time, title))\n",
" wait_times.sort(reverse=True)\n",
" return wait_times"
]
},
{
"cell_type": "code",
"execution_count": 71,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "7a24d343aaa744cf8641b2dfba0cfb37",
"version_major": 2,
"version_minor": 0
},
"text/html": [
"<p>Failed to display Jupyter Widget of type <code>HBox</code>.</p>\n",
"<p>\n",
" If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n",
" that the widgets JavaScript is still loading. If this message persists, it\n",
" likely means that the widgets JavaScript library is either not installed or\n",
" not enabled. See the <a href=\"https://ipywidgets.readthedocs.io/en/stable/user_install.html\">Jupyter\n",
" Widgets Documentation</a> for setup instructions.\n",
"</p>\n",
"<p>\n",
" If you're reading this message in another frontend (for example, a static\n",
" rendering on GitHub or <a href=\"https://nbviewer.jupyter.org/\">NBViewer</a>),\n",
" it may mean that your frontend doesn't currently support widgets.\n",
"</p>\n"
],
"text/plain": [
"HBox(children=(IntProgress(value=1, bar_style='info', max=1), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n"
]
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "f765abca40824c7b94d8f6311c958108",
"version_major": 2,
"version_minor": 0
},
"text/html": [
"<p>Failed to display Jupyter Widget of type <code>HBox</code>.</p>\n",
"<p>\n",
" If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n",
" that the widgets JavaScript is still loading. If this message persists, it\n",
" likely means that the widgets JavaScript library is either not installed or\n",
" not enabled. See the <a href=\"https://ipywidgets.readthedocs.io/en/stable/user_install.html\">Jupyter\n",
" Widgets Documentation</a> for setup instructions.\n",
"</p>\n",
"<p>\n",
" If you're reading this message in another frontend (for example, a static\n",
" rendering on GitHub or <a href=\"https://nbviewer.jupyter.org/\">NBViewer</a>),\n",
" it may mean that your frontend doesn't currently support widgets.\n",
"</p>\n"
],
"text/plain": [
"HBox(children=(IntProgress(value=1, bar_style='info', max=1), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n"
]
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "37114336816e4265aec40d84fcc504e6",
"version_major": 2,
"version_minor": 0
},
"text/html": [
"<p>Failed to display Jupyter Widget of type <code>HBox</code>.</p>\n",
"<p>\n",
" If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n",
" that the widgets JavaScript is still loading. If this message persists, it\n",
" likely means that the widgets JavaScript library is either not installed or\n",
" not enabled. See the <a href=\"https://ipywidgets.readthedocs.io/en/stable/user_install.html\">Jupyter\n",
" Widgets Documentation</a> for setup instructions.\n",
"</p>\n",
"<p>\n",
" If you're reading this message in another frontend (for example, a static\n",
" rendering on GitHub or <a href=\"https://nbviewer.jupyter.org/\">NBViewer</a>),\n",
" it may mean that your frontend doesn't currently support widgets.\n",
"</p>\n"
],
"text/plain": [
"HBox(children=(IntProgress(value=1, bar_style='info', max=1), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n"
]
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "c7f7e1d5940548b8a67aa48f9b3a9659",
"version_major": 2,
"version_minor": 0
},
"text/html": [
"<p>Failed to display Jupyter Widget of type <code>HBox</code>.</p>\n",
"<p>\n",
" If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n",
" that the widgets JavaScript is still loading. If this message persists, it\n",
" likely means that the widgets JavaScript library is either not installed or\n",
" not enabled. See the <a href=\"https://ipywidgets.readthedocs.io/en/stable/user_install.html\">Jupyter\n",
" Widgets Documentation</a> for setup instructions.\n",
"</p>\n",
"<p>\n",
" If you're reading this message in another frontend (for example, a static\n",
" rendering on GitHub or <a href=\"https://nbviewer.jupyter.org/\">NBViewer</a>),\n",
" it may mean that your frontend doesn't currently support widgets.\n",
"</p>\n"
],
"text/plain": [
"HBox(children=(IntProgress(value=1, bar_style='info', max=1), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n"
]
}
],
"source": [
"wt1 = exam_wait_times(1)\n",
"wt2 = exam_wait_times(2)\n",
"wt4 = exam_wait_times(4)\n",
"wt8 = exam_wait_times(8)"
]
},
{
"cell_type": "code",
"execution_count": 78,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[(527.9299986362457, 'IEEE DataStructure Spring 2013 Exam 4'),\n",
" (527.9299986362457, 'Data Structures Spring 2013 Exam 5'),\n",
" (368.9960012435913, 'ACM Programming 2017 (B) Homework 1'),\n",
" (368.9960012435913, '2017秋数据结构C第一次作业(钱诗友班)'),\n",
" (368.9960012435913, '2017秋季数据结构第一次作业(俞勇班)'),\n",
" (266.1959993839264, 'IEEE DataStructure Spring 2013 Exam2'),\n",
" (266.1959993839264, 'Data Structures Spring 2013 Homework 2'),\n",
" (225.62299990653992, 'IEEE Data-Structure 2016 Spring Homework 5'),\n",
" (225.62299990653992, 'Data Structure Spring 2016 Homework 4'),\n",
" (148.63799953460693, 'IEEE DataStructure Spring 2013 Exam1'),\n",
" (148.63799953460693, 'Data Structures Spring 2013 Homework 1'),\n",
" (143.58099913597107, 'ACM Programming 2017 (B) Homework 4'),\n",
" (143.58099913597107, 'ACM Programming 2017 (A) Homework 2'),\n",
" (143.58099913597107, '2017秋数据结构第四次作业(俞勇班)'),\n",
" (143.58099913597107, '2017秋数据结构C第五次作业(钱诗友班)'),\n",
" (143.58099913597107, '2017秋-工科大平台-程序设计思想与方法作业-实验5'),\n",
" (135.33099913597107, 'ACM Programming 2017 (B) Homework 2'),\n",
" (135.33099913597107, 'ACM Programming 2017 (A) Homework 1'),\n",
" (135.33099913597107, '2017秋数据结构C第二次作业(钱诗友班)'),\n",
" (135.33099913597107, '2017秋数据结构C第三次作业(钱诗友班)')]"
]
},
"execution_count": 78,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"wt1[:20]"
]
},
{
"cell_type": "code",
"execution_count": 73,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[(169.2879993915558, 'IEEE DataStructure Spring 2013 Exam 4'),\n",
" (169.2879993915558, 'Data Structures Spring 2013 Exam 5'),\n",
" (138.5650007724762, 'ACM Programming 2017 (B) Homework 1'),\n",
" (138.5650007724762, '2017秋数据结构C第一次作业(钱诗友班)'),\n",
" (138.5650007724762, '2017秋季数据结构第一次作业(俞勇班)'),\n",
" (103.62799978256226, 'IEEE Data-Structure 2016 Spring Homework 5'),\n",
" (103.62799978256226, 'Data Structure Spring 2016 Homework 4'),\n",
" (59.1759991645813, 'ACM Programming 2017 (B) Homework 2'),\n",
" (59.1759991645813, 'ACM Programming 2017 (A) Homework 1'),\n",
" (59.1759991645813, '2017秋数据结构C第二次作业(钱诗友班)')]"
]
},
"execution_count": 73,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"wt2[:10]"
]
},
{
"cell_type": "code",
"execution_count": 74,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[(72.27799963951111, 'IEEE DataStructure Spring 2013 Exam 4'),\n",
" (72.27799963951111, 'Data Structures Spring 2013 Exam 5'),\n",
" (43.12100005149841, 'IEEE Data-Structure 2016 Spring Homework 5'),\n",
" (43.12100005149841, 'Data Structure Spring 2016 Homework 4'),\n",
" (23.743000030517578, 'ACM Programming 2017 (B) Homework 1'),\n",
" (23.743000030517578, '2017秋数据结构C第一次作业(钱诗友班)'),\n",
" (23.743000030517578, '2017秋季数据结构第一次作业(俞勇班)'),\n",
" (22.05799961090088, 'ACM Programming 2017 (B) Homework 2'),\n",
" (22.05799961090088, 'ACM Programming 2017 (A) Homework 1'),\n",
" (22.05799961090088, '2017秋数据结构C第二次作业(钱诗友班)')]"
]
},
"execution_count": 74,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"wt4[:10]"
]
},
{
"cell_type": "code",
"execution_count": 75,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[(28.16599988937378, 'IEEE DataStructure Spring 2013 Exam 4'),\n",
" (28.16599988937378, 'Data Structures Spring 2013 Exam 5'),\n",
" (14.998999834060669, 'IEEE Data-Structure 2016 Spring Homework 5'),\n",
" (14.998999834060669, 'Data Structure Spring 2016 Homework 4'),\n",
" (5.031999826431274, 'ACM Programming 2017 (B) Homework 4'),\n",
" (5.031999826431274, 'ACM Programming 2017 (A) Homework 2'),\n",
" (5.031999826431274, '2017秋数据结构第四次作业(俞勇班)'),\n",
" (5.031999826431274, '2017秋数据结构C第五次作业(钱诗友班)'),\n",
" (5.031999826431274, '2017秋-工科大平台-程序设计思想与方法作业-实验5'),\n",
" (5.010999917984009, 'ACM Programming 2017 (B) Homework 1')]"
]
},
"execution_count": 75,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"wt8[:10]"
]
},
{
"cell_type": "code",
"execution_count": 76,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "4802709c6c2d465cbab87911d0b34b9c",
"version_major": 2,
"version_minor": 0
},
"text/html": [
"<p>Failed to display Jupyter Widget of type <code>HBox</code>.</p>\n",
"<p>\n",
" If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n",
" that the widgets JavaScript is still loading. If this message persists, it\n",
" likely means that the widgets JavaScript library is either not installed or\n",
" not enabled. See the <a href=\"https://ipywidgets.readthedocs.io/en/stable/user_install.html\">Jupyter\n",
" Widgets Documentation</a> for setup instructions.\n",
"</p>\n",
"<p>\n",
" If you're reading this message in another frontend (for example, a static\n",
" rendering on GitHub or <a href=\"https://nbviewer.jupyter.org/\">NBViewer</a>),\n",
" it may mean that your frontend doesn't currently support widgets.\n",
"</p>\n"
],
"text/plain": [
"HBox(children=(IntProgress(value=1, bar_style='info', max=1), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n"
]
}
],
"source": [
"wt16 = exam_wait_times(16)"
]
},
{
"cell_type": "code",
"execution_count": 77,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"[(6.003999948501587, 'IEEE DataStructure Spring 2013 Exam 4'),\n",
" (6.003999948501587, 'Data Structures Spring 2013 Exam 5'),\n",
" (1.5769999027252197, 'IEEE Data-Structure 2016 Spring Homework 5'),\n",
" (1.5769999027252197, 'Data Structure Spring 2016 Homework 4'),\n",
" (1.0109999179840088, 'ACM Programming 2017 (B) Homework 1'),\n",
" (1.0109999179840088, '2017秋数据结构C第一次作业(钱诗友班)'),\n",
" (1.0109999179840088, '2017秋季数据结构第一次作业(俞勇班)'),\n",
" (1.0109999179840088, '2017秋-工科大平台-程序设计思想与方法作业-实验2'),\n",
" (1.0, 'IEEE DataStructure Spring 2013 Exam1'),\n",
" (1.0, 'Data Structures Spring 2013 Homework 1')]"
]
},
"execution_count": 77,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"wt16[:10]"
]
},
{
"cell_type": "code",
"execution_count": 79,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "4b813d21377a41d39e19766994afe4ba",
"version_major": 2,
"version_minor": 0
},
"text/html": [
"<p>Failed to display Jupyter Widget of type <code>HBox</code>.</p>\n",
"<p>\n",
" If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n",
" that the widgets JavaScript is still loading. If this message persists, it\n",
" likely means that the widgets JavaScript library is either not installed or\n",
" not enabled. See the <a href=\"https://ipywidgets.readthedocs.io/en/stable/user_install.html\">Jupyter\n",
" Widgets Documentation</a> for setup instructions.\n",
"</p>\n",
"<p>\n",
" If you're reading this message in another frontend (for example, a static\n",
" rendering on GitHub or <a href=\"https://nbviewer.jupyter.org/\">NBViewer</a>),\n",
" it may mean that your frontend doesn't currently support widgets.\n",
"</p>\n"
],
"text/plain": [
"HBox(children=(IntProgress(value=1, bar_style='info', max=1), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n"
]
},
{
"data": {
"text/plain": [
"[(527.9299986362457, 'IEEE DataStructure Spring 2013 Exam 4'),\n",
" (527.9299986362457, 'Data Structures Spring 2013 Exam 5'),\n",
" (368.9960012435913, 'ACM Programming 2017 (B) Homework 1'),\n",
" (368.9960012435913, '2017秋数据结构C第一次作业(钱诗友班)'),\n",
" (368.9960012435913, '2017秋季数据结构第一次作业(俞勇班)'),\n",
" (266.1959993839264, 'IEEE DataStructure Spring 2013 Exam2'),\n",
" (266.1959993839264, 'Data Structures Spring 2013 Homework 2'),\n",
" (225.62299990653992, 'IEEE Data-Structure 2016 Spring Homework 5'),\n",
" (225.62299990653992, 'Data Structure Spring 2016 Homework 4'),\n",
" (148.63799953460693, 'IEEE DataStructure Spring 2013 Exam1'),\n",
" (148.63799953460693, 'Data Structures Spring 2013 Homework 1'),\n",
" (143.58099913597107, 'ACM Programming 2017 (B) Homework 4'),\n",
" (143.58099913597107, 'ACM Programming 2017 (A) Homework 2'),\n",
" (143.58099913597107, '2017秋数据结构第四次作业(俞勇班)'),\n",
" (143.58099913597107, '2017秋数据结构C第五次作业(钱诗友班)'),\n",
" (143.58099913597107, '2017秋-工科大平台-程序设计思想与方法作业-实验5'),\n",
" (135.33099913597107, 'ACM Programming 2017 (B) Homework 2'),\n",
" (135.33099913597107, 'ACM Programming 2017 (A) Homework 1'),\n",
" (135.33099913597107, '2017秋数据结构C第二次作业(钱诗友班)'),\n",
" (135.33099913597107, '2017秋数据结构C第三次作业(钱诗友班)'),\n",
" (135.33099913597107, '2017秋季数据结构第二次作业(俞勇班)'),\n",
" (135.33099913597107, '2017秋-工科大平台-程序设计思想与方法作业-实验3'),\n",
" (135.33099913597107, '2017秋-工科大平台-程序设计思想与方法作业-实验2'),\n",
" (125.11299967765808, 'IEEE DataStructure 2015 Spring Homework 1s'),\n",
" (105.09299969673157, 'Data Structures Spring 2015 Exam 1'),\n",
" (104.44000029563904, 'IEEE Programming 2014 Homework 9'),\n",
" (104.44000029563904, 'IEEE Programming 2014 Homework 8'),\n",
" (104.44000029563904, 'Data Structure Spring 2014 Homework 5'),\n",
" (102.19000005722046, 'Data Structures Spring 2014 Exam 3'),\n",
" (91.0, 'IEEE Programming 2015 Fall Homework 10'),\n",
" (90.06199955940247, 'ACM PPCA 2015 Exam 7'),\n",
" (86.07999992370605, 'IEEE Summer 2013 Homework 12'),\n",
" (86.07999992370605, 'IEEE Summer 2013 Homework 11'),\n",
" (86.07999992370605, 'IEEE Summer 2013 Homework 10'),\n",
" (77.29800033569336, 'IEEE Programming 2015 Fall Homework 11'),\n",
" (77.29800033569336, 'IEEE DataStructure 2015 Spring Homework 6'),\n",
" (77.29800033569336, 'Data Structure Spring 2015 Homework 4'),\n",
" (76.32999992370605, 'IEEE Summer Exam 4'),\n",
" (72.17000007629395, 'IEEE PPCA 2015 Homework 6'),\n",
" (72.17000007629395, 'IEEE PPCA 2015 Homework 5'),\n",
" (72.17000007629395, 'IEEE PPCA 2015 Exam 2'),\n",
" (65.03999948501587, 'IEEE Data Structures Spring 2013 Homework 1 '),\n",
" (65.03999948501587, 'Data Structures Spring 2013 Homework 3'),\n",
" (61.35999941825867, 'IEEE PPCA 2014 Homework 2'),\n",
" (61.30999994277954, 'IEEE PPCA 2014 Homework 3'),\n",
" (60.971999406814575, 'IEEE DataStructure Spring 2013 Exam3'),\n",
" (57.75, 'Programming Fall Homework 3'),\n",
" (57.64500021934509, 'IEEE Data Structure Exam4'),\n",
" (56.75, 'IEEE Summer Exam 2'),\n",
" (56.75, 'IEEE Summer 2013 Homework 6'),\n",
" (56.75, 'IEEE Summer 2013 Homework 5'),\n",
" (56.75, 'IEEE Summer 2013 Homework 4'),\n",
" (56.007999897003174, 'Programming Fall 2012 Exam 2'),\n",
" (54.10499978065491, 'IEEE Programming 2015 Fall Homework 8'),\n",
" (54.10499978065491, 'IEEE Programming 2015 Fall Exam 2'),\n",
" (54.10499978065491, 'IEEE DataStructure 2015 Spring Homework 5'),\n",
" (52.68999981880188, 'IEEE Programming 2014 Exam 3'),\n",
" (52.68999981880188, 'Data Structure Spring 2014 Homework 2'),\n",
" (50.14799976348877, 'IEEE Summer 2013 Homework 3'),\n",
" (50.14799976348877, 'IEEE Summer 2013 Homework 2'),\n",
" (50.14799976348877, 'IEEE Summer 2013 Homework 1'),\n",
" (47.35000038146973, 'IEEE_DataStructure_2017_Homework_Week10'),\n",
" (47.35000038146973, 'IEEE_DataStructure_2017_Exercise_Week10'),\n",
" (47.35000038146973, 'Data Structure Spring 2017 Homework 2'),\n",
" (46.188000202178955, 'IEEE_DataStructure_2017_Quiz1'),\n",
" (46.188000202178955, 'IEEE_DataStructure_2017_Homework_Chapter4'),\n",
" (46.090999364852905, 'IEEE PPCA 2015 Homework 10'),\n",
" (46.090999364852905, 'IEEE PPCA 2015 Exam 4'),\n",
" (45.730000019073486, 'Programming Fall 2012 Exam 3'),\n",
" (45.730000019073486, '2012级ACM班程序设计第二次作业'),\n",
" (43.800999879837036, 'IEEE PPCA 2015 Homework 2'),\n",
" (43.800999879837036, 'IEEE PPCA 2015 Exam 1'),\n",
" (43.800999879837036, 'ACM PPCA 2015 Exam 1'),\n",
" (43.75699996948242, 'Programming Fall 2015 Homework 1'),\n",
" (40.21999979019165, 'IEEE Programming 2014 Homework 2'),\n",
" (40.21999979019165, 'IEEE Programming 2014 Exam 1'),\n",
" (40.19100022315979, 'ACM Data Structure Spring 2017 Exam 3(To NULL)'),\n",
" (40.19100022315979, 'ACM Data Structure Spring 2017 Exam 3'),\n",
" (40.0, 'SEIEE-Yu Yong Data Structure 2015 Fall Homework 2-ex'),\n",
" (40.0, 'Programming Fall Homework 3 for OIER'),\n",
" (40.0, 'Programming Fall 2015 Homework 3 for Freshman'),\n",
" (40.0, 'Programming Fall 2015 Extend Homework 3 for Freshman'),\n",
" (40.0, 'Programming Fall 2015 Extend Homework 2 for Freshman'),\n",
" (39.36999988555908, 'ACM Programming 2017 Exam 2 (plus)'),\n",
" (39.36999988555908, 'ACM Programming 2017 (B) Homework 5'),\n",
" (39.36999988555908, '2017秋数据结构第七次作业(俞勇班)'),\n",
" (39.36999988555908, '2017秋数据结构C第八次作业(钱诗友班)'),\n",
" (39.36999988555908, '2017秋数据结构C第七次作业(钱诗友班)'),\n",
" (39.36999988555908, '2017秋-工科大平台-程序设计思想与方法作业-实验8'),\n",
" (39.36999988555908, '\\t2017秋数据结构第六次作业(俞勇班)'),\n",
" (38.72999978065491, 'IEEE PPCA 2014 Exam 2'),\n",
" (38.59500002861023, 'IEEE Programming 2015 Fall Homework 9'),\n",
" (38.55799984931946, 'Programming Fall 2012 Exam 1'),\n",
" (37.10199999809265, 'Programming Fall 2014 Homework 1'),\n",
" (37.10199999809265, '2014数据结构第四次作业_俞勇班'),\n",
" (36.90500020980835, 'Data Structures Spring 2015 Exam 2'),\n",
" (36.90500020980835, 'Data Structure Spring 2016 Homework 2'),\n",
" (35.49600005149841, 'SEIEE-Yu Yong Data Structure 2015 Fall Homework 6-ex'),\n",
" (35.49600005149841, 'SEIEE-Yu Yong Data Structure 2015 Fall Homework 6'),\n",
" (35.49600005149841, 'SEIEE-Yu Yong Data Structure 2015 Fall Homework 5-ex'),\n",
" (35.49600005149841, 'Programming Fall Extra Homework for Freshman'),\n",
" (35.49600005149841, 'Programming Fall Extra Homework'),\n",
" (34.79800033569336, 'IEEE Data Structure 2016 Spring Exam 2'),\n",
" (34.79800033569336, 'Data Structure Spring 2016 Homework 3'),\n",
" (34.49199962615967, 'IEEE PPCA 2015 Homework 9'),\n",
" (34.49199962615967, 'IEEE PPCA 2015 Homework 8'),\n",
" (33.49600005149841, 'IEEE DataStructure Exam 3'),\n",
" (33.44399976730347, 'IEEE_DataStructure_2017_Homework_Week8'),\n",
" (33.44399976730347, 'IEEE_DataStructure_2017_Exercise_Week8'),\n",
" (32.961000204086304, 'IEEE_DataStructure_2017_Homework_Week9'),\n",
" (32.76200032234192, 'IEEE Programming 2015 Fall Homework 4'),\n",
" (30.641000032424927, 'ACM Programming 2017 Exam 2'),\n",
" (29.556999921798706, 'IEEE DataStructure 2015 Spring Homework 2'),\n",
" (29.056999921798706, 'ACM Programming 2017 (B) Homework 3'),\n",
" (29.056999921798706, '2017秋数据结构C第四次作业(钱诗友班)'),\n",
" (29.056999921798706, '2017秋季数据结构第三次作业(俞勇班) (加时)'),\n",
" (29.056999921798706, '2017秋-工科大平台-程序设计思想与方法作业-实验4'),\n",
" (27.539999961853027, 'IEEE PPCA 2014 Homework 1'),\n",
" (27.539999961853027, 'IEEE PPCA 2014 Exam 1'),\n",
" (27.46000027656555, 'Data Structures Spring 2015 Exam 2'),\n",
" (27.174000024795532, '上海交通大学“超级码力”程序设计大奖赛 3月月赛'),\n",
" (26.28000020980835, 'IEEE PPCA 2014 Exam 3'),\n",
" (25.859999895095825, 'IEEE Summer Exam 3'),\n",
" (25.859999895095825, 'IEEE Summer 2013 Homework 8'),\n",
" (25.859999895095825, 'IEEE Summer 2013 Homework 7'),\n",
" (25.859999895095825, ' IEEE Summer 2013 Homework 9'),\n",
" (24.677000284194946, '2017秋数据结构第十次作业(俞勇班)'),\n",
" (24.677000284194946, '2017秋数据结构C第十一次作业(钱诗友班) '),\n",
" (24.677000284194946, '2017秋-工科大平台-程序设计思想与方法作业-实验12'),\n",
" (24.621000051498413, '2014数据结构第三次作业_俞勇班'),\n",
" (24.311999082565308, 'IEEE_DataStructure_2017_Homework_Week13'),\n",
" (24.311999082565308, 'IEEE_DataStructure_2017_Exercise_Week13'),\n",
" (24.08400011062622, 'Data Structure Spring 2017 Homework 3'),\n",
" (24.020000219345093, '2017秋数据结构第五次作业(俞勇班)'),\n",
" (24.020000219345093, '2017秋数据结构C第六次作业(钱诗友班)'),\n",
" (24.020000219345093, '2017秋-工科大平台-程序设计思想与方法作业-实验6'),\n",
" (23.059000253677368, 'IEEE_DataStructure_2017_Homework_Chapter7'),\n",
" (23.059000253677368, 'IEEE_DataStructure_2017_Exercise_Week7'),\n",
" (23.0, 'IEEE Programming 2015 Fall Homework 7'),\n",
" (23.0, 'IEEE DataStructure 2015 Spring Homework 4'),\n",
" (23.0, 'IEEE DataStructure 2015 Spring Homework 3'),\n",
" (22.880000352859497, 'Programming Fall 2015 Homework 2'),\n",
" (22.252000093460083, 'ACM Programming 2017 (B) Homework 6'),\n",
" (22.252000093460083, '2017秋-工科大平台-程序设计思想与方法作业-实验9'),\n",
" (22.252000093460083, '2017数据结构第八次作业(俞勇班)'),\n",
" (22.173999786376953, 'IEEE Programming 2015 Fall Exam 1'),\n",
" (22.173999786376953, 'Data Structure Spring 2015 Homework 2'),\n",
" (21.927000284194946, 'IEEE Data Structure Exam 2'),\n",
" (21.927000284194946, 'Data Structure Spring 2015 Homework 3'),\n",
" (21.37999987602234, 'Data Structure Spring 2017 Homework 1 续'),\n",
" (21.179999828338623, 'ACM-PPCA2013 EXAM 1'),\n",
" (21.09600019454956, 'ACM Programming 2017 (A) Homework 3'),\n",
" (21.09600019454956, '2017秋数据结构第八次作业(俞勇班)(补充)'),\n",
" (21.09600019454956, '2017秋数据结构C第九次作业(钱诗友班)'),\n",
" (21.09600019454956, '2017秋-工科大平台-程序设计思想与方法作业-实验10'),\n",
" (21.070000410079956, 'PPCA EXAM 0'),\n",
" (21.0, 'IEEE_DataStructure_2017_Exercise_Week4'),\n",
" (20.98800015449524, 'Programming Fall 2016 Exam 0'),\n",
" (20.98800015449524, '2016秋数据结构第三次作业(俞勇班)'),\n",
" (20.799000024795532, 'IEEE Programming 2015 Fall Exam 3'),\n",
" (20.019999980926514, 'Programming Fall Homework 1'),\n",
" (19.911999940872192, 'Data Structures Spring 2013 Exam 2'),\n",
" (19.674000024795532, '\\tACM Programming 2017 (B) Homework 5 续'),\n",
" (19.65400004386902, 'Data Structures Spring 2015 Exam 2(+900s)'),\n",
" (19.033999919891357, '2017秋数据结构第九次作业(俞勇班)'),\n",
" (19.033999919891357, '2017秋数据结构C第十次作业(钱诗友班)'),\n",
" (19.033999919891357, '2017秋-工科大平台-程序设计思想与方法作业-实验11'),\n",
" (18.288999795913696, 'IEEE PPCA 2015 Homework 4 '),\n",
" (18.288999795913696, 'IEEE PPCA 2015 Homework 3'),\n",
" (18.133999824523926, 'ACM Data Structure Spring 2017 Exam 4'),\n",
" (17.990000009536743, 'Data Structures Spring 2014 Exam 4'),\n",
" (17.921000003814697, 'SEIEE-Yu Yong Data Structure 2015 Fall Homework 4'),\n",
" (17.921000003814697, 'SEIEE-Yu Yong Data Structure 2015 Fall Homework 3-ex'),\n",
" (17.848999500274658, 'IEEE Data Structure 2016 Spring Exam 3'),\n",
" (17.776000022888184, 'ACM Data Structure Spring 2017 Exam 2'),\n",
" (17.609999895095825, 'ACM PPCA 2014 Exam 3'),\n",
" (17.539000034332275, 'ACM PPCA 2015 Exam 0'),\n",
" (17.496999979019165, 'Programming Fall 2016 Exam 3[续]'),\n",
" (17.496999979019165, 'Programming Fall 2016 Exam 3'),\n",
" (17.496999979019165, 'ACM Programming 2016 Homework 3'),\n",
" (17.496999979019165, '2016秋数据结构第八次作业(俞勇班)'),\n",
" (17.229999780654907, 'IEEE PPCA 2014 Exam 4'),\n",
" (17.0, 'IEEE Programming 2014 Exam 2'),\n",
" (16.919000148773193, 'IEEE PPCA 2015 Exam 3'),\n",
" (16.89300012588501, 'IEEE_DataStructure_2017_Homework_Week11'),\n",
" (16.89300012588501, 'IEEE_DataStructure_2017_Exercise_Week11'),\n",
" (16.18999981880188, 'Programming Fall Homework 2'),\n",
" (16.18999981880188, 'Programming Fall 2013 Exam 2'),\n",
" (16.0, 'IEEE Programming 2014 Homework 3'),\n",
" (16.0, 'Data Structures Spring 2014 Exam 1'),\n",
" (15.934999942779541, 'ACM Programming 2017 Exam 1'),\n",
" (15.710000038146973, 'Programming Fall 2014 Homework 2'),\n",
" (15.710000038146973, '2014数据结构第五、第六次作业_俞勇班'),\n",
" (15.62999963760376, 'IEEE Data Structure 2016 Spring Exam1'),\n",
" (15.619999885559082, 'ACM-PPCA2013 EXAM 4'),\n",
" (15.609999656677246, 'IEEE Programming 2014 Exam 4'),\n",
" (15.503000020980835, '2017秋-工科大平台-程序设计思想与方法作业-实验6-增补'),\n",
" (15.299000024795532, 'IEEE_DataStructure_2017_Homework_Chapter6'),\n",
" (15.299000024795532, 'IEEE_DataStructure_2017_Exercise_Week6'),\n",
" (15.299000024795532, 'Data Structure Spring 2017 Homework 1'),\n",
" (15.297999858856201, 'IEEE PPCA 2015 Homework 7'),\n",
" (15.092000007629395, 'ACM Data Structure Spring 2017 Exam 1'),\n",
" (15.026999950408936, '面向对象程序设计第二次上机考试(加时)'),\n",
" (14.96399998664856, 'IEEE_DataStructure_2017_Homework_Week12'),\n",
" (14.96399998664856, 'IEEE_DataStructure_2017_Exercise_Week12'),\n",
" (14.692999839782715, 'ACM Programming Homework Supplement'),\n",
" (14.692999839782715, 'ACM Programming Homework 4'),\n",
" (14.692999839782715, '2016秋数据结构第九次作业(俞勇班)'),\n",
" (14.657000064849854, 'ACM Programming 2017 Exam 3'),\n",
" (14.432000160217285, 'Data Structures Spring 2013 Exam 1'),\n",
" (14.319999933242798, 'Programming Fall Homework 4'),\n",
" (14.129999876022339, 'IEEE Summer Exam 1'),\n",
" (14.122999906539917, '面向对象程序设计第十四周上机考试'),\n",
" (14.072999715805054, 'IEEE_DataStructure_2017_Quiz3'),\n",
" (14.069000005722046, 'ACM Programming 2017 Exam 0'),\n",
" (14.069000005722046, '2017秋季数据结构第三次作业(俞勇班)'),\n",
" (14.0239999294281, 'Programming Fall 2016 Exam 4'),\n",
" (14.0239999294281, '2016秋数据结构第十次作业(俞勇班)'),\n",
" (13.967000007629395, 'Data Structures Spring 2015 Exam 5'),\n",
" (13.957000017166138, 'ACM PPCA 2015 Exam 2'),\n",
" (13.889000177383423, 'Programming Fall 2016 Exam 2'),\n",
" (13.889000177383423, '2016秋数据结构第六次作业(续)(俞勇班)'),\n",
" (13.343999862670898, 'Programming Fall 2015 Exam 2'),\n",
" (13.294999837875366, 'ACM PPCA 2015 Exam 3'),\n",
" (13.089000225067139, 'ACM Programming 2017 (A) Homework 2 续'),\n",
" (12.90500020980835, '面向对象程序设计第十四周上机考试'),\n",
" (12.458000183105469, 'Programming Fall 2016 Exam 1 '),\n",
" (12.458000183105469, 'ACM Programming 2016 Homework 2'),\n",
" (12.458000183105469, '2016秋数据结构第五次作业(俞勇班)'),\n",
" (12.243000030517578, 'IEEE Data-Structure 2016 Spring Homework 3'),\n",
" (12.200000047683716, '面向对象程序设计上机第七周作业'),\n",
" (12.02400016784668, 'SEIEE-Yu Yong Data Structure 2015 Fall Homework 5'),\n",
" (12.02400016784668, 'SEIEE-Yu Yong Data Structure 2015 Fall Homework 4-ex'),\n",
" (12.02400016784668, 'Programming Fall 2015 Extend Homework 4 for Freshman'),\n",
" (12.0, 'Data Structure Spring 2014 Homework 1'),\n",
" (12.0, '2017秋数据结构第六次作业(俞勇班)(加时)'),\n",
" (11.869999885559082, 'ACM PPCA 2014 Exam 1'),\n",
" (11.863999843597412, 'Data Structures Spring 2013 Exam 3'),\n",
" (11.789000034332275, 'IEEE Data-Structure 2016 Spring Homework 4'),\n",
" (11.721999883651733, 'Programming Fall 2014 Exam 1'),\n",
" (11.450000047683716, 'IEEE Programming 2014 Homework 7'),\n",
" (11.450000047683716, 'IEEE Programming 2014 Homework 6'),\n",
" (11.450000047683716, 'Data Structures Spring 2014 Exam 2'),\n",
" (11.450000047683716, 'Data Structure Spring 2014 Homework 3'),\n",
" (11.326000213623047, 'IEEE PPCA 2015 Homework 1'),\n",
" (11.309999942779541, 'ACM-PPCA2013 EXAM 2'),\n",
" (11.251000165939331, 'IEEE_DataStructure_2017_Homework_Chapter3'),\n",
" (11.251000165939331, 'IEEE_DataStructure_2017_Homework_Chapter2'),\n",
" (11.19700002670288, '2014数据结构第十一次作业_俞勇班'),\n",
" (11.186000108718872, 'ACM PPCA 2015 Exam 5'),\n",
" (11.075000047683716, 'ACM PPCA 2015 Exam 6'),\n",
" (11.03600001335144, '2012级ACM班程序设计第一次作业'),\n",
" (11.02400016784668, 'IEEE_DataStructure_2017_Quiz2'),\n",
" (10.938999891281128, 'IEEE Programming 2015 Fall Homework 6'),\n",
" (10.829999923706055, 'Data Structures Spring 2015 Exam 4'),\n",
" (10.791999816894531, 'IEEE Data Structure Exam 1'),\n",
" (10.782000064849854, 'Programming Fall 2014 Homework 4'),\n",
" (10.782000064849854, 'Programming Fall 2014 Exam 4'),\n",
" (10.73200011253357, 'ACM PPCA 2015 Exam 4'),\n",
" (10.67199993133545, 'IEEE Data-Structure 2016 Spring Homework 2'),\n",
" (10.67199993133545, 'Data Structures Spring 2015 Exam 1'),\n",
" (10.658999919891357, 'ACM Programming 2016 Homework 1'),\n",
" (10.658999919891357, '2016秋数据结构第二次作业(俞勇班)'),\n",
" (10.31000018119812, 'Programming Fall 2013 Exam 3'),\n",
" (10.17199993133545, 'Data Structures Spring 2015 Exam 0'),\n",
" (10.157999992370605, '面向对象程序设计上机第六周作业'),\n",
" (10.157999992370605, 'IEEE_DataStructure_2017_Homework_Chapter5'),\n",
" (10.03600001335144, '面向对象程序设计上机第十三周作业'),\n",
" (10.010999917984009, '面向对象16周上机考试'),\n",
" (10.010000228881836, 'IEEE_DataStructure_2017_Exercise_Week3'),\n",
" (9.718000173568726, 'IEEE Programming 2015 Fall Homework 3'),\n",
" (9.569999933242798, 'Data Structures Spring 2013 Exam 4'),\n",
" (9.430000066757202, '2012级ACM班程序设计第三次作业'),\n",
" (9.395999908447266, 'Data Structures Spring 2015 Exam 4(+920s)'),\n",
" (9.391000032424927, 'Programming Fall 2015 Exam 4'),\n",
" (9.068000078201294, '面向对象程序设计上机第十二周作业'),\n",
" (9.044000148773193, '面向对象程序设计上机第八周作业'),\n",
" (9.0239999294281, '面向对象程序设计上机第十周作业'),\n",
" (9.01799988746643, 'Programming Fall 2014 Exam 0'),\n",
" (8.961999893188477, 'Data Structures Spring 2015 Exam 4'),\n",
" (8.859999895095825, 'ACM PPCA 2014 Exam 2'),\n",
" (8.769999980926514, 'ACM PPCA 2014 Exam 4'),\n",
" (8.658999919891357, '面向对象程序设计第二次上机考试'),\n",
" (8.641999959945679, '2016秋数据结构第六次作业(俞勇班)'),\n",
" (8.605999946594238, 'Data Structures Spring 2015 Exam 3'),\n",
" (8.560999870300293, 'Data Structures Spring 2015 Exam 3'),\n",
" (8.460000038146973, 'Data Structure Spring 2014 Homework 4'),\n",
" (8.263999938964844, 'SEIEE-Yu Yong Data Structure 2015 Fall Homework 2'),\n",
" (8.263999938964844, 'Programming Fall Homework 1 for OIER'),\n",
" (8.263999938964844, 'Programming Fall 2015 Homework 1 for Freshman '),\n",
" (8.174999952316284, '2016秋数据结构第四次作业(俞勇班)'),\n",
" (8.155999898910522, 'IEEE Programming 2015 Fall Homework 5'),\n",
" (8.130000114440918, 'IEEE Programming 2014 Homework 5'),\n",
" (8.115000009536743, 'Programming Fall Extra Homework 2'),\n",
" (8.056999921798706, '2016秋数据结构第七次作业(俞勇班)'),\n",
" (8.044000148773193, '2016秋数据结构Final Homework(俞勇班)'),\n",
" (8.031000137329102, '面向对象程序设计上机第十五周作业'),\n",
" (7.809999942779541, 'Data Structure Spring 2016 Homework 1'),\n",
" (7.553999900817871, 'Programming Fall Homework 2 for OIER'),\n",
" (7.553999900817871, 'Programming Fall 2015 Homework 2 for Freshman '),\n",
" (7.549999952316284, 'ACM PPCA 2014 Exam 5'),\n",
" (7.4700000286102295, 'Programming Fall 2013 Exam 4'),\n",
" (7.456999778747559, '2016秋数据结构第一次作业(俞勇班)'),\n",
" (7.409999847412109, 'Programming Fall 2013 Exam 1'),\n",
" (7.319000005722046, '2012级数据结构作业_龚玲班(一)'),\n",
" (7.216000080108643, 'IEEE Data-Structure 2016 Spring Homework 1'),\n",
" (7.13700008392334, '数据结构第一次作业【俞老师班】'),\n",
" (7.13700008392334, 'SEIEE-Yu Yong Data Structure 2015 Fall Homework 1-ex'),\n",
" (7.074000120162964, 'ACM Programming 2016 Homework 3 续'),\n",
" (7.010999917984009, ' 面向对象程序设计-第五周上机考试'),\n",
" (7.0, 'IEEE Programming 2014 Homework 1'),\n",
" (6.924000024795532, 'Programming Fall 2014 Homework 3'),\n",
" (6.509999990463257, 'Data Structures Spring 2015 Exam 0'),\n",
" (6.509999990463257, 'ACM PPCA 2014 Exam 6'),\n",
" (6.476999998092651, 'Programming Fall 2014 Exam 2'),\n",
" (6.476999998092651, '2014数据结构第七次作业_俞勇班'),\n",
" (6.450999975204468, 'Data Structures Spring 2015 Exam 5'),\n",
" (6.2170000076293945, 'ACM Programming 2016 Homework 1 for Zhu Feng'),\n",
" (6.210000038146973, 'ACM PPCA 2014 Exam 0'),\n",
" (6.159999847412109, '2014数据结构第十次作业_俞勇班'),\n",
" (6.159999847412109, '2014数据结构第八、九次作业_俞勇班'),\n",
" (6.119000196456909, 'Programming Fall 2015 Exam 3'),\n",
" (6.075000047683716, 'Data Structures Spring 2015 Exam 3(+900s)'),\n",
" (6.068000078201294, 'IEEE Data Structures Spring 2013 Homework 2'),\n",
" (6.0, 'ACM-PPCA2013 EXAM 3'),\n",
" (5.980000019073486, 'IEEE Programming 2014 Homework 4'),\n",
" (5.4079999923706055, 'SEIEE-Yu Yong Data Structure 2015 Fall Homework 3'),\n",
" (5.4079999923706055, 'Programming Fall 2015 Extend Homework 1 for Freshman'),\n",
" (5.322999954223633, 'Programming Fall 2015 Exam 1'),\n",
" (5.033999919891357, '面向对象程序设计上机第四周作业'),\n",
" (4.706000089645386, 'Programming Fall 2014 Exam 3'),\n",
" (4.510999917984009, '面向对象程序设计上机第三周作业'),\n",
" (4.400000095367432, '上海交通大学“超级码力”程序设计大奖赛 练习赛'),\n",
" (4.272000074386597, '2014数据结构第二次作业_俞勇班'),\n",
" (4.272000074386597, '2014数据结构第一次作业'),\n",
" (4.049999952316284, 'Programming Fall 2012 Exam 4'),\n",
" (4.0, '上海交通大学“超级码力”程序设计大奖赛 练习赛 '),\n",
" (4.0, '2016-2017赛季上海交通大学ACM校队选拔热身赛(1) 公众号:上海交大ACM'),\n",
" (3.7750000953674316, 'ACM Programming Homework 4 [续]'),\n",
" (3.1019999980926514, 'ACM PPCA 2014 Exam 7'),\n",
" (3.0, '上海交通大学“超级码力”程序设计大奖赛 练习赛'),\n",
" (1.872999906539917, '2016-2017赛季上海交通大学ACM校队选拔热身赛(2) 公众号:上海交大ACM'),\n",
" (0, 'Programming Fall 2015 Exam 0')]"
]
},
"execution_count": 79,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"exam_wait_times(num_judge=1)"
]
},
{
"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.3"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment