コード例 #1
0
def check_split(conn, verbose):
    result, refobj = asst2.load_result('split')
    val = asst2.similarity(result, refobj, verbose)
    if val < 1.:
        if verbose:
            print("INFO: attempting to load resplit tables")
        try:
            result, refobj = asst2.load_result('resplit')
            num_partials = len(refobj)
            marks = (total - partial * num_partials) * val**2

            for i, refelem in enumerate(refobj):
                try:
                    table = result[i]
                except IndexError:
                    print("ERROR: student does not have resplit[%d]" % i)
                    continue
                val = asst2.similarity(table, refelem, verbose)
                marks += partial * val**2

            conn.send(marks)
            return
        except KeyError:
            print("WARNING: could not load resplit table from student")
    conn.send(total * val**2)
コード例 #2
0
def check_optimal(conn, verbose):    
    result, refobj = asst2.load_result('optimal')
    val = asst2.similarity(result, refobj, verbose)
    if val >= cutoff:
        conn.send(math.sqrt(val)*total)
    else:
        conn.send(0)
コード例 #3
0
def check_dealer(conn, verbose):
    result, refobj = asst2.load_result('dealer')
    mark = total
    for key in _DEALER_CODE:
        if mark <= 0:
            print("too many errors. exiting.")
            mark = 0
            break
        if key not in result:
            print("missing table for {}".format(key))
            mark -= 1
            continue
        stu = result[key]
        ans = refobj[key]
        sk = tuple(stu.keys())
        ak = tuple(ans.keys())
        if sk != ak:
            print("key set mismatch for table {}: {} vs. {}".format(
                key, sk, ak))
            mark -= 1
            continue
        for pts in ak:
            if not asst2.isclose(stu[pts], ans[pts]):
                print("probability mismatch for table {}, score {}:" \
                " {} vs. {}".format(key, pts, stu[pts], ans[pts]))
                mark -= 1
                break
    conn.send(int(mark))
コード例 #4
0
def check_dealer(conn, verbose):
    result, refobj = asst2.load_result('dealer')
    mark = total
    for key in _DEALER_CODE:
        if mark <= 0:
            print("too many errors. exiting.")
            mark = 0
            break
        if key not in result:
            print("missing table for {}".format(key))
            mark -= 1
            continue
        stu = result[key]
        ans = refobj[key]
        sk = sorted(stu.keys())
        ak = sorted(ans.keys())
        pairs = zip(ak, sk)
        ski = list(map(int, sk))
        if ski != ak:
            print("key set mismatch for table {}: {} vs. {}".format(
                key, ski, ak))
            mark -= 1
            continue
        for ap, sp in pairs:
            if not asst2.isclose(stu[sp], ans[ap]):
                print("probability mismatch for table {}, score {}:" \
                " {} vs. {}".format(key, ap, stu[sp], ans[ap]))
                mark -= 1
                break
    conn.send(int(mark))
コード例 #5
0
def check_advantage(conn, verbose):
    result, refobj = asst2.load_result('advantage')
    diff = abs(refobj - result)
    if asst2.isclose(diff, 0):
        conn.send(total)
        return

    if diff < cutoff:
        if verbose:
            print("Almost correct player advantage.")
        mark = int(total * (cutoff - diff) / cutoff)
    else:
        if verbose:
            print("Incorrect player advantage.")
        mark = 0
    conn.send(mark)
コード例 #6
0
def check_hit(conn, verbose):
    result, refobj = asst2.load_result('hit')
    val = asst2.similarity(result, refobj, verbose)
    conn.send(total * val**2)
コード例 #7
0
def check_strategy(conn, verbose):
    result, refobj = asst2.load_result('strategy')
    val = asst2.similarity(result, refobj, verbose)
    conn.send(total * val**2)