Пример #1
0
def find_matches(answer, attempt):

    logger.debug('find_matches recieved answer=' + str(answer) + ' attempt=' +
                 str(attempt))
    attempt_parsed = parse_webwork(attempt)
    logger.debug('calling eval_parsed on on' + str(attempt_parsed))
    attempt_tree = eval_parsed(attempt_parsed)
    logger.debug('calling flatten on' + str(attempt_tree))
    attempt_list = flatten(attempt_tree, 't')
    logger.debug('attempt list:\n' + str(attempt_list))

    answer_parsed = parse_webwork(answer)
    logger.debug('calling eval_parsed on on' + str(answer_parsed))
    answer_tree = eval_parsed(answer_parsed)
    logger.debug('calling flatten on' + str(answer_tree))
    answer_list = flatten(answer_tree, 'c')
    logger.debug('answer list\n' + str(answer_list))

    combined_list = sorted(answer_list + attempt_list, key=lambda x: x[0])
    logger.debug('combined list\n' + str(combined_list))

    Hits = find_Hits(combined_list)
    logger.debug('Hits:\n' + str(Hits))

    final_matches = find_dominating_hits(Hits, answer, attempt)

    return final_matches
Пример #2
0
def answer_for_student(df, user_id, answer_tree):
    '''
    Evaluates an answer parse tree for a specific user
    '''
    user_vars = vars_for_student(df, user_id)
    etree = eval_parsed(answer_tree, user_vars)
    return etree
Пример #3
0
 def answer_for_student(self, user_id):
     user_vars = self.vars_for_student(user_id)
     key = frozenset(user_vars.iteritems())
     answer = self.answer_exps.get(key)
     if answer:
         return answer
     else:
         etree = eval_parsed(self.answer_ptree, user_vars)
         self.answer_exps[key] = etree
         return etree
Пример #4
0
def parse_eval(string):
    """ Given an expression, return it's parse tree and it's evaluation tree """
    expr = parse_webwork(string)
    if expr:
        try:
            etree = eval_parsed(expr)
            return expr, etree
        except:
            return (None, None)
    else:
        return (None, None)
Пример #5
0
def parsed(string):
    expr = parse_webwork(string)
    if expr:
        try:
            etree = eval_parsed(expr)
            nums = Collect_numbers(etree)
            return etree, nums
        except:
            return (None, None)
    else:
        return (None, None)