Last active
August 29, 2015 14:21
-
-
Save Michael0x2a/6222b26151a49e493021 to your computer and use it in GitHub Desktop.
This file contains hidden or 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
#!/usr/bin/env python | |
""" | |
This is a short script that will analyze grades. It uses | |
Python 3, and uses only the default built-in libraries to | |
make it easier to run. | |
This is essentially a cleaner version of the code I demoed | |
in class -- it does a better job of organizing code and | |
showcasing some of the more interesting features of Python. | |
For example, this multi-line comment is not actually a comment, | |
but is one giant string. If you start any arbitrary module, | |
class, or function with a multi-line string, you can access that | |
documentation when running the program. For example, try running | |
the following Python code: | |
def testing(): | |
'''This is a multi-line comment/string for the `testing` | |
function. Note that you can start and end multi-line | |
comments with either three double quotes or three single | |
quotes.''' | |
print("Hello world!") | |
# `help` is a function provided to you by default in Python | |
# that will print out the documentation, if it exists. | |
help(testing) | |
print('--------') | |
# The info is also stored as a field inside the `testing` | |
# object. (Remember, in Python, everything is an object, | |
# including functions) | |
docs = testing.__doc__ | |
print(docs) | |
""" | |
# Makes Python 2 behave a bit more like Python 3 | |
from __future__ import print_function, division | |
import math | |
import pprint | |
try: | |
import statistics | |
except ImportError: | |
# The Statistics module is available only in Python 3 -- | |
# this is a hack to emulate its functionality | |
# in Python 2. I also really shouldn't be combining | |
# lines, but I want to keep this short. | |
class statistics(object): | |
@staticmethod | |
def mean(data): return sum(data) / len(data) | |
@staticmethod | |
def median(data): | |
if len(data) == 0: raise Exception("No median for empty data") | |
data = sorted(data) | |
n = len(data) | |
i = len(data) // 2 | |
if n % 2 == 1: return data[n // 2] # integer division | |
else: return (data[i - 1] + data[i]) / 2 | |
@staticmethod | |
def stdev(data): | |
if len(data) < 2: | |
raise Exception("variance requires at least two data points") | |
c = statistics.mean(data) | |
ss = sum([(x - c)**2 for x in data]) # a**b is a to the power of b | |
ss -= sum([(x - c) for x in data])**2 / len(data) | |
return math.sqrt(ss/(len(data) - 1)) | |
def parse_row(row): | |
''' | |
Takes single row, and splits it into smaller strings | |
to obtain the individual cells. | |
''' | |
return row.strip().split(' \t') | |
def clean_cell(cell): | |
''' | |
Takes a cell (in string form), and cleans it up, | |
returning a float. It'll replace all empty cells with | |
NaN (Not A Number). | |
''' | |
if cell == ' ': | |
return float('NaN') | |
elif cell.endswith('%'): | |
return float(cell[:-1]) | |
else: | |
return float(cell) | |
def clean_row(row): | |
'''Takes a row, and converts each cell to a flow.''' | |
output = [] | |
for cell in row: | |
output.append(clean_cell(cell)) | |
return output | |
def clean_row_alt(row): | |
''' | |
When writing code, you'll find that you're writing | |
something similar to the above function over and | |
over again -- you loop through a list and transform | |
each element, adding it to a new list and return that. | |
This is such a common pattern that Python has a feature | |
that will let you express this idea in a single line. | |
The feature is called 'list comprehensions'. | |
''' | |
output = [clean_cell(cell) for cell in row] | |
return output | |
def label_row(header, row): | |
''' | |
Takes a row, and turns it into a map of column | |
name to cell. | |
''' | |
output = {} | |
# iterate over both lists at the same time | |
for head, cell in zip(header, row): | |
output[head] = cell | |
return output | |
# Note: we could have written this entire function | |
# in one line: | |
# | |
# return dict(zip(header, row)) | |
# | |
def parse_data(header, row): | |
''' | |
A wrapper that calls all three previous | |
methods for us. | |
''' | |
return label_row(header, clean_row(parse_row(row))) | |
class Data: | |
'''An object representing a single data source.''' | |
def __init__(self, filename): | |
'''Opens the given text file and parses + | |
extracts the data inside.''' | |
stream = open(filename, 'r') | |
lines = stream.readlines() | |
stream.close() | |
# I have two fields | |
self.headers = parse_row(lines[0]) | |
self.data = [parse_data(self.headers, row) for row in lines[1:]] | |
def get_all(self, category, ignore_nan=True): | |
'''Gets all scores from a certain column, ignoring NaN scores | |
by default. (The second parameter is optional, and will | |
default to 'True')''' | |
data = [row[category] for row in self.data] | |
if ignore_nan: | |
data = [num for num in data if not math.isnan(num)] | |
return data | |
def __len__(self): | |
'''Any methods starting and ending with two underscores is a | |
"magic method" -- they allow you to build classes that closely | |
emulate default ones. For example, normally doing `a + b` wouldn't | |
work for objects. However, if you defined the `__add__` method, | |
then Python would take `a + b` and internally rewrite that to | |
`a.__add__(b)`. Here, we're allowing somebody to use the builtin | |
len operator on this class.''' | |
return len(self.data) | |
# Now, on to our main code | |
def main(): | |
'''By convention, Python people will try and have a 'main' function, | |
just like Java.''' | |
cse143_au14 = Data('cse143-au14.txt') | |
midterm_scores = cse143_au14.get_all('midterm') | |
# What are our headers? | |
display_headers(cse143_au14) | |
# What does each row look like? | |
display_random_row(cse143_au14) | |
# Look at midterm scores | |
display_score_stats(midterm_scores, 'Midterm') | |
# Look at scores for each assignment | |
display_assignment_stats(cse143_au14) | |
# Look at how many people attempted the bonus | |
display_bonus_attempts(cse143_au14) | |
# Display graph (must have matplotlib installed). | |
# I've commented this out so you can still run the | |
# rest of the code. | |
#display_histogram(midterm_scores, 'Histogram of midterm scores') | |
def display_headers(grades): | |
print('Headers:') | |
print(grades.headers) | |
print() | |
def display_random_row(grades): | |
print('Printing a random row') | |
print(grades.data[42]) | |
print() | |
print('Printing the same data, but formatted nicely') | |
pprint.pprint(grades.data[42]) | |
print() | |
def display_score_stats(scores, header): | |
print(header + ':') | |
print(' Mean: ' + str(statistics.mean(scores))) | |
print(' Median: ' + str(statistics.median(scores))) | |
print(' Stdev: ' + str(statistics.stdev(scores))) | |
print() | |
def display_assignment_stats(grades): | |
assignments = [ | |
'assign1', 'assign2', 'assign3', 'assign4', 'bonus4', | |
'midterm', | |
'assign5', 'assign6', 'assign7', 'assign8', 'bonus8', | |
'final' | |
] | |
print('Assignment grades over time') | |
for assign in assignments: | |
data = grades.get_all(assign) | |
mean = statistics.mean(data) | |
# The following line has a lot of stuff in it, and I don't want to | |
# keep doing string concatenation. Let me use string formatting instead, | |
# and display data to only 2 decimal places: | |
template = ' {assignment_id}: {mean:.2f} + (# submissions: {attempted})' | |
print(template.format(assignment_id=assign, mean=mean, attempted=len(data))) | |
print() | |
def percentage_attempted(data, category): | |
return len(data.get_all(category)) / len(data) | |
def display_bonus_attempts(grades): | |
print('How many people attempted the bonus assignments?') | |
print(' Percentage attempted for bonus 4: ' + | |
str(percentage_attempted(grades, 'bonus4'))) | |
print(' Percentage attempted for bonus 8: ' + | |
str(percentage_attempted(grades, 'bonus8'))) | |
print() | |
def display_histogram(scores, title_text): | |
'''You need to have matlotlib intalled to run this function, | |
which is why it's commented out in the main method. The imports | |
here should also really be at the top of the file to be good style, | |
but whatever.''' | |
print('Generating graph (expect a slight delay)') | |
import pylab | |
pylab.hist(scores, bins=100) | |
pylab.title(title_text) | |
pylab.xlabel("Score") | |
pylab.ylabel("Num people") | |
print('Close window to continue') | |
pylab.show() | |
print() | |
if __name__ == '__main__': | |
# This if statement is telling Python to only run the | |
# main method if we're directly running this file, and | |
# to not run it if some other file is importing us and | |
# using our methods. | |
main() |
This file contains hidden or 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
code assign1 assign2 assign3 assign4 bonus4 assign5 assign6 assign7 assign8 bonus8 Late_Days explore weekly % midterm final total grade | |
375 20 20 19 20 1 20 18 20 30 4 6 100.0% 93 94 96.20 3.9 | |
1688 16 17 17 14 18 18 18 29 4 0 86.5% 82 78 82.19 3.0 | |
1785 16 14 17 11 16 17 14 24 4 1 76.1% 82 58 70.03 2.1 | |
1843 20 20 20 20 2 20 20 19 28 2 0 100.6% 100 99 99.84 4.0 | |
2560 15 19 19 18 1 19 18 20 30 2 2 6 95.9% 93 99 96.55 4.0 | |
3091 19 19 17 0 0 18 18 17 26 1 6 80.0% 83 83 81.80 2.9 | |
3469 18 16 19 18 18 19 20 28 0 91.8% 89 75 84.51 3.1 | |
3508 17 13 0 4 14 4 0 28.2% 57 22.69 0.0 | |
3540 18 15 19 17 18 13 16 23 5 0 81.8% 85 84 83.31 3.0 | |
3863 15 17 17 14 16 16 11 21 5 0 74.7% 86 77 77.88 2.7 | |
3893 14 16 13 15 0 19 16 18 29 3 4 83.1% 76 83 81.65 2.9 | |
3894 18 18 15 18 1 20 18 17 28 2 1 0 91.2% 100 94 94.07 3.8 | |
3980 15 16 17 17 1 19 17 14 29 2 1 85.5% 67 70 75.60 2.5 | |
3988 17 19 17 19 1 14 16 19 27 4 0 87.6% 83 73 80.86 2.9 | |
4117 18 17 13 12 1 5 10 8 5 0 49.4% 54 43 47.76 0.0 | |
4314 17 18 18 17 1 16 16 19 19 2 0 84.1% 99 93 90.65 3.6 | |
4952 16 15 18 18 17 17 16 27 3 0 84.7% 71 76 78.48 2.7 | |
4956 14 16 18 9 14 13 3 28 5 0 67.6% 56 51 58.66 1.3 | |
5749 19 19 16 17 17 19 19 27 0 90.0% 67 77 80.20 2.8 | |
6972 20 16 16 20 18 18 18 29 5 0 91.2% 85 81 85.87 3.2 | |
6996 19 20 20 19 20 20 19 28 1 0 97.1% 91 94 94.62 3.9 | |
6998 19 19 18 14 19 17 26 5 1 77.8% 78 84 80.34 2.8 | |
7087 18 17 17 16 15 17 17 27 4 0 84.7% 80 94 87.48 3.3 | |
7352 16 16 15 16 18 20 19 29 3 0 87.6% 90 71 81.46 2.9 | |
7836 18 16 1 0 20.0% 52 37 33.20 0.0 | |
7929 17 17 18 16 15 18 16 26 1 0 84.1% 88 98 90.45 3.6 | |
8025 18 17 19 19 19 15 15 29 2 4 0 90.0% 71 91 86.60 3.3 | |
8187 15 18 16 16 1 16 18 20 28 0 9 88.8% 95 93 91.73 3.6 | |
8234 17 20 19 19 18 17 15 29 5 0 90.6% 65 46 67.64 1.9 | |
8312 18 16 16 15 0 17 15 17 25 0 5 7 83.1% 83 87 84.65 3.1 | |
8514 14 14 8 13 15 13 16 13 0 62.4% 55 55 57.94 1.2 | |
8630 20 16 17 17 2 19 19 18 29 2 1 0 93.5% 95 97 95.21 3.9 | |
8828 18 18 15 19 1 20 15 19 26 3 8 90.4% 80 76 82.56 3.0 | |
8978 19 18 16 14 14 15 15 26 5 0 80.6% 85 92 86.04 3.2 | |
9046 19 14 16 16 1 19 16 18 30 2 9 89.4% 85 83 85.96 3.2 | |
9178 19 18 18 16 18 18 30 0 80.6% 87 91 86.04 3.2 | |
9241 17 17 16 16 20 14 14 23 5 0 80.6% 53 52 63.64 1.6 | |
9550 16 17 18 20 19 19 20 29 0 92.9% 76 62 77.18 2.6 | |
9587 18 18 20 19 2 19 19 18 26 2 4 2 95.1% 79 96 92.24 3.7 | |
9738 16 17 14 15 19 15 17 9 2 0 71.8% 77 77 74.91 2.4 | |
9910 19 19 19 19 19 18 20 29 7 96.7% 93 99 96.87 4.0 | |
9915 17 18 14 18 1 19 16 15 27 5 0 85.3% 77 55 71.52 2.2 | |
10217 16 16 17 17 18 20 20 26 2 0 88.2% 79 83 84.29 3.1 | |
10232 11 5 2 14 2 9 9 5 0 30.6% 80 81 60.64 1.4 | |
10411 18 19 20 19 20 20 20 29 3 0 97.1% 76 99 93.62 3.8 | |
10445 15 16 16 18 17 15 19 27 0 84.1% 81 84 83.45 3.1 | |
10530 18 14 17 17 17 19 16 28 4 9 87.6% 70 83 82.26 3.0 | |
11087 18 15 16 18 17 13 19 28 4 0 84.7% 76 80 81.08 2.9 | |
11212 15 15 14 7 10 10 18 17 5 0 62.4% 99 83 77.94 2.7 | |
11278 19 16 19 19 20 20 19 30 1 0 95.3% 63 63 75.92 2.5 | |
11497 11 16 16 14 17 15 11 24 5 0 72.9% 71 55 65.38 1.8 | |
11980 16 16 19 19 15 19 17 28 5 1 87.8% 74 87 84.74 3.1 | |
12071 19 16 20 19 19 19 20 29 0 94.7% 86 94 92.68 3.7 | |
12556 19 19 18 20 20 16 19 30 3 4 95.5% 88 96 94.20 3.8 | |
12753 17 15 16 12 10 10 16 23 0 70.0% 72 64 68.00 1.9 | |
13110 14 16 18 18 1 18 14 18 27 1 0 84.7% 79 91 86.08 3.2 | |
14256 14 17 18 16 14 14 13 17 5 0 72.4% 81 66 71.54 2.2 | |
15365 19 18 19 18 20 19 16 28 1 0 92.4% 73 67 78.34 2.7 | |
15384 0 17 15 16 0 15 11 24 3 0 57.6% 57 54 56.06 1.1 | |
15409 5 19 16 17 0 18 19 18 28 5 5 83.3% 80 82 82.13 3.0 | |
16006 15 12 14 18 18 16 17 29 4 0 81.8% 86 71 78.31 2.7 | |
16306 17 17 19 19 0 19 17 17 26 3 1 89.0% 68 93 86.41 3.3 | |
16754 16 17 16 18 1 17 17 18 27 2 0 86.5% 98 91 90.59 3.6 | |
17047 16 17 20 18 19 18 19 28 1 6 92.4% 86 89 89.74 3.5 | |
17233 19 18 19 19 20 16 15 29 0 91.2% 66 63 74.87 2.4 | |
17399 17 16 17 18 0 19 20 16 26 0 87.6% 98 88 89.86 3.5 | |
17839 20 19 20 19 20 18 17 26 3 0 93.5% 91 68 82.81 3.0 | |
18071 16 18 19 17 2 16 17 20 28 2 0 90.0% 90 94 91.60 3.6 | |
18951 17 15 16 15 13 18 12 25 5 0 77.1% 83 72 76.22 2.5 | |
19001 16 17 14 9 11 9 0 12 5 2 52.2% 42 34 42.86 0.0 | |
19056 16 17 19 19 0 17 19 30 4 0 80.6% 59 60 68.04 1.9 | |
19853 16 18 0 0 19 15 16 16 5 0 58.8% 76 61 63.13 1.6 | |
19918 19 18 18 19 19 19 18 24 3 1 90.8% 99 94 93.71 3.8 | |
20597 19 16 18 17 2 17 19 18 25 2 5 89.8% 68 64 75.12 2.5 | |
20751 19 20 17 19 19 13 19 27 5 0 90.0% 80 83 85.20 3.2 | |
20778 18 18 17 19 0 20 18 19 26 2 0 91.2% 94 91 91.67 3.6 | |
20933 17 17 17 19 20 19 16 28 1 0 90.0% 80 91 88.40 3.4 | |
21393 17 17 17 15 16 12 15 28 5 0 80.6% 70 71 74.64 2.4 | |
21407 18 17 10 5 10 9 2 13 5 0 49.4% 48 28 40.56 0.0 | |
21897 10 14 15 14 11 7 15 22 5 0 63.5% 40 53 54.61 1.0 | |
22124 18 16 18 16 1 16 19 16 28 0 3 7 88.4% 78 84 84.57 3.1 | |
22190 15 15 11 16 13 15 16 22 4 0 72.4% 47 38 53.54 0.9 | |
22382 18 17 16 11 14 14 9 5 3 58.8% 67 40 52.93 0.9 | |
22411 18 18 16 18 19 18 18 30 2 5 0 92.4% 90 96 93.34 3.8 | |
22477 18 18 18 16 0 17 19 19 27 0 89.4% 75 100 90.76 3.6 | |
22762 19 18 17 18 0 19 17 20 27 4 0 91.2% 78 84 85.67 3.2 | |
22801 18 17 17 17 17 17 12 30 2 0 85.3% 70 76 78.52 2.7 | |
22831 17 15 14 13 17 18 14 26 1 0 78.8% 65 87 79.33 2.8 | |
23342 15 15 19 20 19 17 20 26 2 6 90.0% 89 81 86.20 3.2 | |
23636 20 20 20 20 19 20 20 30 0 99.4% 98 95 97.36 4.0 | |
23664 19 18 20 18 18 18 18 24 5 0 90.0% 83 73 81.80 2.9 | |
24145 17 19 19 18 17 19 18 27 2 3 0 91.8% 90 95 92.71 3.7 | |
24598 19 19 19 19 18 18 17 25 0 90.6% 96 90 91.44 3.6 | |
25371 16 18 14 17 0 20 19 18 27 1 0 87.6% 80 88 86.26 3.3 | |
26509 16 18 16 18 20 20 19 25 2 89.8% 74 85 84.72 3.1 | |
26802 19 18 20 18 2 20 20 18 30 2 0 98.2% 100 97 98.09 4.0 | |
27027 18 16 15 18 13 16 15 29 5 0 82.4% 62 61 69.74 2.1 | |
27087 18 19 19 19 1 17 19 19 29 2 4 0 95.3% 93 95 94.72 3.9 | |
27188 17 16 15 19 15 13 15 25 5 0 79.4% 85 73 77.96 2.7 | |
27190 17 17 18 18 18 18 18 29 4 7 91.4% 76 62 76.55 2.6 | |
27330 17 17 16 18 17 15 19 27 0 85.9% 69 69 75.75 2.5 | |
27333 17 17 16 14 18 16 10 24 3 0 77.6% 67 75 74.46 2.4 | |
27474 17 18 20 17 1 20 20 20 27 0 94.1% 96 93 94.05 3.8 | |
27989 20 17 18 16 16 19 20 30 2 0 91.8% 87 92 90.91 3.6 | |
28278 12 17 14 13 16 15 12 24 5 0 72.4% 87 65 72.34 2.3 | |
28301 15 16 17 13 13 15 19 19 1 0 74.7% 83 77 77.28 2.6 | |
28341 18 18 17 17 0 18 16 19 29 1 0 89.4% 85 89 88.36 3.4 | |
28434 17 18 16 16 16 15 12 26 5 1 80.2% 85 50 69.08 2.0 | |
28438 20 16 17 16 1 18 15 17 28 3 1 87.3% 79 100 90.70 3.6 | |
28443 18 17 20 19 19 16 17 27 5 0 90.0% 22 65 66.40 1.8 | |
28565 19 18 19 17 2 19 18 19 29 2 2 3 95.9% 96 99 97.15 4.0 | |
29493 17 18 18 16 16 15 17 29 3 2 86.3% 65 66 73.91 2.4 | |
29839 17 18 14 18 19 18 19 30 3 1 90.2% 85 89 88.68 3.4 | |
30191 19 18 18 17 20 19 16 27 2 0 90.6% 65 75 79.24 2.7 | |
30721 20 20 20 20 19 18 20 29 5 0 97.6% 85 69 83.66 3.1 | |
30899 20 20 19 16 2 17 19 19 30 2 3 0 96.5% 79 91 90.79 3.5 | |
31707 13 16 14 17 15 17 16 22 0 76.5% 82 81 79.39 2.8 | |
31729 19 17 20 16 18 20 18 27 2 0 91.2% 83 98 92.27 3.7 | |
32081 19 17 16 16 15 14 13 28 5 0 81.2% 65 74 75.07 2.4 | |
32890 17 18 17 18 19 15 14 28 2 0 85.9% 79 77 80.95 2.9 | |
33039 17 17 16 14 17 15 0 0 5 0 56.5% 41 47 49.59 0.0 | |
33178 20 19 19 16 0 19 18 17 28 1 0 91.8% 93 95 93.31 3.8 | |
33238 16 19 15 18 1 20 17 18 29 1 5 91.0% 97 98 94.99 3.9 | |
33912 17 17 17 17 19 17 16 27 0 86.5% 89 92 89.19 3.5 | |
34381 15 17 17 16 0 18 19 14 26 0 83.5% 74 92 85.01 3.2 | |
34457 18 19 17 19 17 17 19 29 2 2 91.6% 79 69 80.03 2.8 | |
35450 16 13 15 17 18 18 16 28 1 0 82.9% 82 88 84.78 3.1 | |
35830 16 18 17 16 16 18 19 28 2 0 87.1% 74 78 80.82 2.9 | |
36088 16 18 19 18 17 19 16 29 1 0 89.4% 92 74 83.76 3.1 | |
36149 17 19 17 19 1 18 18 18 27 2 1 0 91.8% 94 81 87.91 3.4 | |
37140 19 20 16 18 2 18 19 18 29 2 3 0 94.7% 100 97 96.68 4.0 | |
37233 18 20 17 18 0 18 19 19 27 2 0 91.8% 88 98 93.51 3.8 | |
37458 17 16 19 19 16 16 18 28 2 0 87.6% 84 80 83.86 3.1 | |
38357 18 18 18 17 0 19 18 15 28 2 0 88.8% 92 70 81.93 2.9 | |
38452 19 18 12 15 18 13 14 26 5 0 79.4% 79 83 80.76 2.9 | |
38456 18 20 20 17 2 18 19 16 29 1 1 93.7% 94 98 95.49 3.9 | |
38514 20 19 17 18 19 16 18 29 2 0 91.8% 93 85 89.31 3.5 | |
38547 16 15 15 16 16 17 20 25 3 0 82.4% 74 58 70.94 2.2 | |
39339 19 17 18 18 18 15 18 26 3 0 87.6% 84 83 85.06 3.2 | |
39509 19 19 18 17 20 20 20 29 1 0 95.3% 98 99 97.32 4.0 | |
39600 9 14 16 14 15 13 19 26 2 0 74.1% 71 69 71.45 2.2 | |
39854 20 19 17 19 17 17 17 28 0 90.6% 97 86 90.04 3.5 | |
40500 16 16 13 14 12 10 14 26 5 0 71.2% 79 83 77.47 2.6 | |
40931 16 18 17 17 1 18 19 18 30 0 90.6% 96 87 90.24 3.5 | |
41287 17 17 17 18 0 15 15 17 24 2 0 82.4% 92 92 88.14 3.4 | |
41355 15 16 16 19 18 16 20 29 2 1 89.0% 89 87 88.21 3.4 | |
42125 18 18 19 20 0 17 18 11 26 4 0 86.5% 78 73 79.39 2.8 | |
42510 19 18 16 19 18 19 20 26 0 91.2% 60 81 80.87 2.9 | |
43254 19 16 18 18 18 19 0 0 5 0 63.5% 79 78 72.41 2.3 | |
43466 11 15 0 0 15 14 11 20 5 0 50.6% 65 36 47.64 0.0 | |
43599 19 16 18 20 1 20 19 19 30 5 3 95.9% 91 86 90.95 3.6 | |
43857 15 15 16 13 11 12 17 27 3 0 74.1% 66 44 60.45 1.4 | |
43927 19 17 17 19 20 16 15 28 5 0 88.8% 85 86 86.93 3.3 | |
44369 16 16 16 15 15 14 13 5 0 61.8% 82 70 69.11 2.0 | |
44691 17 19 16 17 1 19 19 19 30 2 2 0 93.5% 94 93 93.41 3.8 | |
44808 15 19 17 17 11 15 15 28 4 0 80.6% 92 77 81.44 2.9 | |
44919 15 15 16 18 19 18 17 9 3 9 76.5% 73 58 68.39 2.0 | |
44979 20 16 12 17 0 19 16 13 29 4 0 83.5% 93 78 83.21 3.0 | |
45616 17 17 16 15 18 19 16 26 0 0 84.7% 91 98 91.28 3.6 | |
45648 17 17 19 18 2 20 15 18 27 3 2 90.4% 88 93 90.96 3.6 | |
45966 16 17 20 18 17 19 20 24 5 0 88.8% 74 64 75.93 2.5 | |
46231 15 16 18 17 14 17 23 5 0 70.6% 76 88 78.64 2.7 | |
46258 17 18 18 19 1 17 19 18 28 3 0 91.2% 90 84 88.07 3.4 | |
46547 16 19 18 18 2 18 19 18 29 2 1 0 93.5% 84 100 94.21 3.8 | |
46675 15 13 13 18 19 14 15 23 2 9 78.2% 92 73 78.89 2.7 | |
46902 19 17 19 17 16 17 20 28 0 90.0% 84 74 82.40 3.0 | |
47024 19 16 17 20 0 15 18 19 30 2 5 6 92.9% 94 87 90.78 3.6 | |
47647 18 18 19 19 18 17 17 27 2 5 0 91.2% 91 96 93.07 3.7 | |
47927 15 19 18 17 19 17 18 29 1 8 91.0% 89 74 83.79 3.1 | |
47957 0 17 0 13 0 3 0 17.6% 57 18.46 0.0 | |
48232 16 16 15 17 1 20 12 15 28 2 1 0 83.5% 86 91 87.01 3.3 | |
48641 18 16 19 18 16 17 17 29 0 88.2% 96 80 86.49 3.3 | |
48704 18 18 19 20 17 17 19 27 4 0 91.2% 96 82 88.47 3.4 | |
48921 16 10 10 3 15 9 11 14 5 0 51.8% 64 58 56.71 1.1 | |
49578 19 16 17 18 0 18 15 18 27 5 3 87.6% 74 82 82.66 3.0 | |
49688 17 17 18 18 15 13 13 30 0 9 84.7% 94 92 89.48 3.5 | |
49719 19 17 20 18 18 15 17 30 3 7 92.0% 88 79 85.98 3.2 | |
49779 18 20 19 18 20 15 19 30 5 0 93.5% 55 80 80.41 2.8 | |
49943 20 18 18 13 16 17 19 28 5 0 87.6% 65 50 68.06 1.9 | |
50559 14 16 16 14 16 16 16 24 0 2 0 77.6% 81 76 77.66 2.6 | |
50595 18 18 17 17 1 17 15 19 28 5 3 88.8% 69 91 85.73 3.2 | |
50651 16 18 19 17 19 14 15 30 4 0 87.1% 70 82 81.62 2.9 | |
50674 18 18 15 17 18 19 19 24 5 0 87.1% 90 79 84.42 3.1 | |
50808 11 12 16 17 10 16 16 24 5 0 71.8% 81 67 71.71 2.2 | |
51273 19 19 18 19 20 17 19 29 3 0 94.1% 79 73 82.65 3.0 | |
51350 16 17 15 16 11 14 16 29 5 0 78.8% 61 66 70.13 2.1 | |
51374 20 19 18 17 17 17 17 28 5 0 90.0% 94 81 87.20 3.3 | |
51474 14 18 18 19 0 19 18 20 30 2 3 0 92.9% 95 101 96.58 4.0 | |
52398 14 14 18 19 17 17 20 29 2 0 87.1% 77 73 79.42 2.8 | |
52816 18 19 20 18 20 20 20 28 3 0 95.9% 85 74 84.95 3.2 | |
52848 16 19 16 13 14 12 11 26 5 4 75.5% 45 60 63.20 1.6 | |
52940 14 12 10 12 15 11 9 0 5 0 48.8% 62 59 55.53 1.0 | |
53161 19 18 18 18 18 17 18 28 4 0 90.6% 87 81 86.04 3.2 | |
53680 14 19 9 18 18 16 16 27 5 0 80.6% 40 61 64.64 1.7 | |
53749 18 17 18 18 2 20 14 18 26 2 2 0 90.0% 96 91 91.60 3.6 | |
54322 15 14 16 17 0 18 14 17 26 2 0 80.6% 90 96 88.64 3.4 | |
54411 16 19 8 15 1 18 18 14 28 5 0 80.6% 95 96 89.64 3.5 | |
54418 15 17 17 16 18 15 18 29 2 0 85.3% 88 98 90.92 3.6 | |
54507 16 17 19 19 1 20 16 18 30 2 1 7 94.3% 99 90 93.53 3.8 | |
54928 19 17 17 17 0 18 18 17 29 2 4 5 91.6% 85 92 90.43 3.6 | |
54996 19 17 19 17 19 16 17 29 4 6 91.2% 79 22 61.07 1.4 | |
55209 19 15 19 17 1 20 18 19 27 3 7 92.5% 97 89 92.02 3.7 | |
55731 20 20 19 18 1 17 19 19 30 2 0 97.1% 96 96 96.42 3.9 | |
55826 16 18 17 19 18 18 19 27 2 5 0 90.6% 68 76 80.24 2.8 | |
56044 18 17 17 16 15 14 14 28 3 3 82.4% 81 71 77.54 2.6 | |
56151 20 18 20 18 18 19 20 29 2 0 96.5% 90 99 96.19 3.9 | |
56186 16 13 15 15 18 15 9 27 5 0 75.3% 80 59 69.72 2.1 | |
56714 20 19 17 17 18 18 17 29 3 0 91.2% 93 98 94.27 3.8 | |
57200 14 15 20 17 1 20 18 17 27 0 87.6% 89 93 90.06 3.5 | |
57305 16 19 19 19 19 19 17 27 0 91.2% 99 88 91.47 3.6 | |
57426 19 17 18 17 18 16 16 27 5 0 87.1% 77 48 69.42 2.0 | |
58067 12 17 19 18 17 15 16 24 3 0 81.2% 84 74 78.87 2.7 | |
58349 5 7 6 2 3 2 7 6 4 0 22.4% 85 59 49.54 0.0 | |
58352 19 18 18 20 19 17 17 30 5 0 92.9% 84 91 90.38 3.5 | |
58611 15 18 17 16 16 16 16 29 5 0 84.1% 79 72 78.25 2.7 | |
58674 16 17 15 16 18 17 20 29 2 0 87.1% 88 75 82.42 3.0 | |
58762 18 17 17 18 17 17 18 28 4 0 88.2% 77 85 84.69 3.1 | |
58903 18 18 15 19 0 19 20 18 29 0 1 0 91.8% 87 97 92.91 3.7 | |
60745 19 13 16 15 15 16 19 26 5 0 81.8% 66 61 70.31 2.1 | |
61065 18 17 18 19 18 17 17 26 1 0 88.2% 90 88 88.49 3.4 | |
61143 19 20 19 17 1 18 19 20 27 4 2 94.5% 97 98 96.40 3.9 | |
61164 16 17 16 17 1 18 18 17 26 2 0 85.9% 97 101 94.15 3.8 | |
62260 14 11 7 6 3 5 0 24.1% 61 39 37.45 0.0 | |
62356 20 17 16 17 0 17 19 18 21 1 5 86.3% 88 80 84.11 3.1 | |
62422 14 15 18 17 16 15 15 28 3 0 81.2% 77 91 84.27 3.1 | |
62575 19 16 16 18 18 19 17 27 2 0 88.2% 74 84 83.69 3.1 | |
63097 19 20 8 11 15 13 18 28 5 0 77.6% 67 70 72.46 2.3 | |
63125 19 19 19 18 16 8 16 21 5 2 80.4% 94 86 85.36 3.2 | |
63136 18 18 18 18 17 17 17 24 5 0 86.5% 63 83 80.39 2.8 | |
63949 19 16 16 16 15 18 18 29 4 0 86.5% 88 96 90.59 3.6 | |
64234 16 17 18 18 18 20 17 29 2 0 90.0% 81 90 88.20 3.4 | |
64394 20 17 19 20 19 17 20 29 2 0 94.7% 94 100 96.68 4.0 | |
64431 9 13 8 7 14 20 16 27 3 0 67.1% 67 65 66.22 1.8 | |
65077 19 19 19 19 1 20 18 19 30 2 7 99.0% 99 97 98.21 4.0 | |
65528 18 17 18 15 0 16 17 17 25 3 1 84.3% 74 89 84.13 3.1 | |
66094 18 18 18 17 1 15 17 16 30 1 0 88.2% 96 87 89.29 3.5 | |
66232 18 16 18 18 13 17 18 30 0 87.1% 69 51 69.02 2.0 | |
66583 17 15 16 15 17 16 17 29 1 0 83.5% 83 60 74.01 2.4 | |
66796 18 16 17 15 17 6 9 6 5 3 61.8% 66 83 71.11 2.2 | |
67636 16 16 17 19 0 19 19 17 29 6 90.6% 75 63 76.44 2.5 | |
67830 17 18 15 17 0 19 16 17 27 0 85.9% 94 74 82.75 3.0 | |
67992 18 18 19 17 16 19 14 28 5 0 87.6% 84 79 83.46 3.1 | |
68019 19 18 17 20 2 20 20 20 30 2 3 99.4% 87 100 97.16 4.0 | |
68083 16 15 17 18 18 17 17 26 5 0 84.7% 86 83 84.28 3.1 | |
68408 19 19 19 20 20 17 19 18 4 4 89.6% 89 77 84.44 3.1 | |
68474 18 17 19 18 18 16 17 29 5 6 90.6% 97 93 92.84 3.7 | |
68499 20 19 20 20 19 20 20 29 3 0 98.2% 83 77 86.69 3.3 | |
69795 18 19 16 20 0 19 16 15 26 0 87.6% 80 76 81.46 2.9 | |
71127 9 11 2 6 13 16 15 17 4 0 52.4% 77 54 57.94 1.2 | |
71441 19 16 7 12 15 14 0 0 5 0 48.8% 92 87 72.73 2.3 | |
71476 19 19 13 12 19 16 15 5 0 66.5% 80 62 67.39 1.9 | |
71624 13 19 16 13 16 16 16 28 5 4 81.4% 69 63 71.55 2.2 | |
71947 6 15 8 0 8 15 10 20 5 0 48.2% 51 48 48.69 0.0 | |
72554 19 17 19 18 20 17 18 26 3 0 90.6% 80 88 87.44 3.3 | |
73072 20 17 20 19 20 17 15 30 0 92.9% 99 94 94.58 3.9 | |
73163 15 13 11 11 1 11 9 5 0 41.8% 40 40 40.71 0.0 | |
73428 18 16 12 14 14 15 17 25 5 0 77.1% 83 74 77.02 2.6 | |
73458 15 17 18 19 18 20 19 30 4 0 91.8% 84 101 93.91 3.8 | |
73491 18 20 18 18 20 15 15 29 5 0 90.0% 85 73 82.20 3.0 | |
73938 18 12 17 14 16 17 15 27 5 0 80.0% 59 83 77.00 2.6 | |
73981 18 20 18 16 20 20 16 29 1 0 92.4% 88 100 94.54 3.9 | |
74350 19 19 16 18 20 19 15 29 0 91.2% 83 66 79.47 2.8 | |
74419 18 18 18 19 19 16 19 30 2 0 92.4% 79 85 86.74 3.3 | |
75157 16 17 18 13 15 17 15 26 5 0 80.6% 78 55 69.84 2.1 | |
75471 18 17 15 18 19 17 17 28 0 87.6% 76 65 76.26 2.5 | |
75727 19 13 7 7 17 7 13 5 0 48.8% 61 38 46.93 0.0 | |
75933 16 17 19 18 17 18 15 23 2 3 0 85.3% 95 72 81.92 2.9 | |
75990 18 17 16 15 14 14 18 16 5 0 75.3% 73 63 69.92 2.1 | |
76856 16 14 11 4 9 5 0 31.8% 41 17 27.71 0.0 | |
76863 19 19 20 20 0 20 15 16 29 2 3 9 95.9% 95 96 95.75 3.9 | |
77088 17 14 17 16 19 19 18 28 5 0 87.1% 82 61 75.62 2.5 | |
77208 18 19 17 17 19 20 18 29 2 0 92.4% 98 96 94.94 3.9 | |
77243 19 18 18 0 15 17 16 29 2 0 77.6% 83 81 80.06 2.8 | |
77269 18 15 16 18 19 15 14 29 3 0 84.7% 85 93 88.08 3.4 | |
77823 15 14 9 14 9 16 0 25 1 0 60.0% 63 79 68.20 2.0 | |
78546 18 18 19 20 2 19 20 20 29 1 4 0 97.6% 85 92 92.86 3.7 | |
78677 16 2 0 9.4% 29 9.56 0.0 | |
79916 18 17 19 18 16 12 14 28 5 0 83.5% 73 53 69.21 2.0 | |
80056 19 17 17 16 15 20 19 24 5 0 86.5% 82 87 85.79 3.2 | |
80094 16 12 15 10 6 12 17 21 5 0 64.1% 66 71 67.25 1.9 | |
80149 19 17 18 17 17 17 17 30 0 89.4% 82 86 86.56 3.3 | |
80295 18 16 18 14 18 17 17 28 2 3 0 87.1% 75 89 85.42 3.2 | |
81233 19 19 15 17 19 16 18 29 0 89.4% 80 60 75.76 2.5 | |
81313 18 18 15 16 17 13 18 25 2 0 82.4% 75 74 77.54 2.6 | |
81389 15 17 17 17 12 16 14 24 3 0 77.6% 57 48 61.66 1.5 | |
81513 15 15 19 15 12 14 14 22 5 0 74.1% 80 54 67.25 1.9 | |
81553 18 17 19 18 20 17 19 30 3 0 92.9% 77 77 83.38 3.0 | |
81611 19 17 17 18 18 20 20 29 1 9 94.7% 86 50 75.08 2.5 | |
81702 19 18 20 19 18 17 19 29 5 1 93.7% 65 92 87.29 3.3 | |
81902 20 18 18 17 19 16 15 29 5 0 89.4% 74 56 72.96 2.3 | |
82349 20 20 19 18 2 18 19 19 28 2 0 97.1% 99 95 96.62 4.0 | |
82607 17 14 11 8 6 1 0 32.9% 59 25 34.98 0.0 | |
82733 16 15 19 18 19 20 20 30 3 0 92.4% 96 84 89.74 3.5 | |
82830 16 19 18 0 18 2 7 43.1% 81 33.45 0.0 | |
82889 17 17 20 17 17 0 14 0 4 0 60.0% 78 38 54.80 1.0 | |
82924 19 20 19 19 19 18 17 29 2 2 94.5% 93 92 93.20 3.7 | |
82925 15 17 16 13 15 15 13 28 0 77.6% 79 51 67.26 1.9 | |
83273 19 17 18 18 20 18 30 3 2 82.7% 83 96 88.10 3.4 | |
83659 18 18 19 18 1 19 19 19 25 5 0 91.8% 73 70 79.31 2.8 | |
83851 18 18 11 5 0 27.6% 68 30 36.66 0.0 | |
83947 18 17 19 20 1 18 17 19 29 2 0 92.9% 84 86 88.38 3.4 | |
84373 18 19 18 17 19 20 19 30 0 94.1% 77 58 76.25 2.5 | |
84821 19 19 18 20 18 19 19 29 3 0 94.7% 98 91 93.88 3.8 | |
84822 18 16 0 10 14 16 15 30 1 0 70.0% 63 69 68.20 2.0 | |
84881 16 17 18 17 16 15 15 26 4 0 82.4% 74 87 82.54 3.0 | |
84910 19 17 18 17 9 14 20 16 5 0 76.5% 93 63 74.39 2.4 | |
85303 13 16 19 17 16 15 16 27 1 0 81.8% 53 66 69.71 2.1 | |
85551 17 18 17 18 13 14 18 29 3 0 84.7% 63 89 82.08 3.0 | |
85595 17 16 5 15 0 15 14 11 20 5 0 66.5% 77 62 66.79 1.9 | |
85813 16 20 20 17 15 17 20 26 1 0 88.8% 91 81 86.13 3.2 | |
86218 17 18 19 17 1 20 18 20 30 2 3 0 95.3% 94 94 94.52 3.9 | |
86421 15 17 18 12 17 18 5 0 57.1% 70 36.82 0.0 | |
86614 20 20 20 19 19 18 20 28 5 0 96.5% 79 75 84.39 3.1 | |
86798 17 19 20 16 0 19 16 19 29 3 0 91.2% 90 96 92.87 3.7 | |
86830 16 14 16 18 18 14 17 27 5 0 82.4% 72 72 76.14 2.5 | |
86978 16 12 12 17 14 8 15 3 5 0 57.1% 74 68 64.82 1.7 | |
87152 17 16 17 10 19 18 17 29 3 0 84.1% 53 49 63.85 1.6 | |
87153 18 18 20 18 19 20 18 29 0 94.1% 95 83 89.85 3.5 | |
87205 18 17 19 19 19 17 18 27 0 90.6% 90 87 89.04 3.5 | |
87223 18 15 18 18 0 17 15 17 28 4 0 85.9% 90 79 83.95 3.1 | |
87376 18 18 16 20 17 18 12 28 5 1 86.7% 80 85 84.67 3.1 | |
87556 16 13 10 14 11 12 15 25 5 0 68.2% 51 65 63.49 1.6 | |
87821 18 19 8 18 15 8 12 11 5 0 64.1% 78 77 72.05 2.2 | |
88076 16 19 15 9 18 14 14 24 5 0 75.9% 53 36 55.35 1.0 | |
88142 17 15 16 16 16 16 16 28 1 0 82.4% 86 72 78.94 2.7 | |
88303 19 17 19 16 0 17 17 16 28 4 7 89.0% 80 72 80.41 2.8 | |
88371 17 16 17 19 19 18 17 26 5 0 87.6% 71 74 78.86 2.7 | |
89172 20 16 19 20 1 18 20 19 30 2 2 7 98.4% 84 71 84.57 3.1 | |
89209 18 18 14 19 15 9 18 29 4 0 82.4% 99 93 89.94 3.5 | |
89867 20 13 19 18 18 20 18 27 5 0 90.0% 83 78 83.80 3.1 | |
89894 19 18 18 19 18 15 14 22 2 0 84.1% 75 72 77.45 2.6 | |
89925 19 15 14 0 18 18 18 28 4 5 77.5% 62 49 62.98 1.6 | |
89967 15 17 18 18 16 18 19 23 3 0 84.7% 90 70 79.88 2.8 | |
90093 18 18 17 10 14 9 20 30 5 0 80.0% 77 64 73.00 2.3 | |
90119 18 18 14 17 19 18 16 29 0 87.6% 74 73 79.06 2.7 | |
90602 18 19 20 18 19 15 17 29 0 91.2% 88 83 87.27 3.3 | |
90759 17 20 18 17 17 18 19 29 0 91.2% 73 71 79.47 2.8 | |
91078 19 19 20 19 0 18 20 18 28 2 5 0 95.9% 73 91 89.35 3.5 | |
91566 16 16 14 10 11 0 0 15 5 0 48.2% 59 49 50.69 0.7 | |
91573 18 17 20 17 18 13 17 29 2 0 87.6% 84 83 85.06 3.2 | |
91627 15 18 16 19 19 19 15 30 0 88.8% 94 91 90.73 3.6 | |
91761 19 19 17 15 1 18 20 18 28 0 3 9 92.9% 98 99 96.38 3.9 | |
91892 20 19 18 18 2 20 19 20 30 2 5 9 100.6% 99 93 97.24 4.0 | |
91949 19 17 18 17 20 19 17 26 0 90.0% 84 101 93.20 3.7 | |
91953 20 18 19 18 20 20 19 30 0 96.5% 100 89 94.19 3.8 | |
91983 19 19 20 18 1 19 18 18 25 2 0 92.4% 74 92 88.54 3.4 | |
92045 16 15 14 14 16 15 0 29 0 70.0% 75 59 66.60 1.8 | |
92682 15 13 17 15 12 5 0 42.4% 57 28.34 0.0 | |
92816 18 19 16 20 1 18 17 18 28 1 91.4% 85 84 87.15 3.3 | |
92910 16 18 11 14 15 15 16 28 2 0 78.2% 76 76 76.89 2.6 | |
92917 14 16 16 18 19 15 9 24 5 0 77.1% 75 60 69.82 2.1 | |
92966 17 17 20 0 13 14 17 24 5 0 71.8% 60 37 55.51 1.0 | |
93738 20 18 16 19 19 15 18 24 5 0 87.6% 68 58 71.86 2.2 | |
93816 19 19 19 20 15 16 20 29 4 4 93.1% 85 93 91.45 3.6 | |
93838 18 19 19 19 1 17 20 20 30 0 95.9% 99 101 98.55 4.0 | |
93993 18 17 18 19 19 14 18 29 5 0 89.4% 96 70 82.96 3.0 | |
94572 14 15 16 16 16 12 13 27 5 0 75.9% 73 74 74.55 2.4 | |
94607 17 13 17 18 17 19 16 22 1 0 81.8% 82 72 77.91 2.7 | |
94665 18 16 17 15 20 15 17 5 0 69.4% 82 84 77.76 2.6 | |
94737 20 20 19 19 18 12 19 29 2 0 91.8% 78 75 82.31 3.0 | |
94767 18 17 20 18 1 18 18 19 30 2 1 6 95.9% 88 89 91.55 3.6 | |
94860 18 19 14 19 1 18 17 19 28 2 1 9 92.9% 94 87 90.78 3.6 | |
94863 16 17 18 15 15 12 20 29 0 83.5% 90 85 85.41 3.2 | |
94897 19 18 18 18 17 16 18 28 4 0 89.4% 84 92 89.36 3.5 | |
94900 19 18 19 20 1 20 18 20 30 2 5 0 98.2% 87 100 96.69 4.0 | |
94931 20 17 18 18 18 17 18 29 5 0 91.2% 81 71 81.07 2.9 | |
95024 16 15 18 18 1 18 16 16 29 5 0 86.5% 97 97 92.79 3.7 | |
95535 16 19 18 13 18 19 20 29 1 0 89.4% 100 97 94.56 3.9 | |
95661 19 17 19 18 19 17 19 28 2 0 91.8% 56 59 71.51 2.2 | |
95796 19 19 19 19 1 20 19 17 30 4 0 95.9% 82 93 91.95 3.7 | |
95857 18 19 20 20 19 20 20 30 7 99.0% 92 92 94.81 3.9 | |
96599 18 18 20 15 1 19 20 17 27 2 3 5 93.3% 84 84 87.73 3.4 | |
96658 17 15 5 16 16 6 4 12 5 0 53.5% 61 68 60.81 1.4 | |
96662 16 19 19 18 18 13 19 28 5 0 88.2% 90 74 82.89 3.0 | |
96820 18 17 14 16 15 17 24 1 0 71.2% 85 73 74.67 2.4 | |
96988 16 17 15 14 17 15 18 29 0 82.9% 87 72 79.38 2.8 | |
97044 14 13 10 16 15 15 16 25 5 0 72.9% 47 54 60.18 1.4 | |
97392 16 14 16 15 0 17 15 14 27 3 0 78.8% 91 83 82.93 3.0 | |
97883 16 18 17 18 1 17 18 19 25 1 3 88.2% 87 98 91.89 3.7 | |
98351 19 18 15 18 20 18 18 27 5 1 90.2% 94 87 89.68 3.5 | |
98619 17 16 15 15 12 14 15 3 0 61.2% 75 77 70.27 2.1 | |
98674 17 17 18 17 1 17 16 15 27 2 1 0 86.5% 70 78 79.79 2.8 | |
98866 18 18 19 18 19 17 19 29 4 0 92.4% 71 74 80.74 2.9 | |
99065 16 14 11 15 16 13 14 27 5 0 74.1% 89 80 79.45 2.8 | |
99375 19 18 20 18 19 14 17 28 2 2 0 91.2% 94 81 87.67 3.4 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment