def is_output_limit_exceeded(result, target): # 验证输出数量 pattern = re.compile(r'\n', re.X) match = pattern.findall(result) Log.analysis_result_log('ANALYSIS : this length of match is ' + str(len(match))) Log.analysis_result_log('ANALYSIS : this length of target is ' + str(len(target))) if len(match) - 5 != len(target): return True return False
def is_wrong_answer(result, target): # 验证输出结果 for item in target: # here is a bug!!! pattern = re.compile(r'(?<![\S*])' + str(item) + r'(?![\S*])', re.X) Log.analysis_result_log('ANALYSIS : the item in target is ' + str(item)) # pattern = re.compile(str(item), re.X) match = pattern.search(result) if match is None: return True return False
def analysis(result, target): Log.analysis_result_log('ANALYSIS : 0') if AnalysisResult.is_memory_limit_exceeded(result): return DATA.MEMORY_LIMIT_EXCEEDED Log.analysis_result_log('ANALYSIS : 1') if AnalysisResult.is_time_out(result): return DATA.TIME_LIMIT_EXCEEDED Log.analysis_result_log('ANALYSIS : 2') if AnalysisResult.is_wrong_answer(result, target): return DATA.WRONG_ANSWER Log.analysis_result_log('ANALYSIS : 3') if AnalysisResult.is_output_limit_exceeded(result, target): return DATA.OUTPUT_LIMIT_EXCEEDED Log.analysis_result_log('ANALYSIS : 4') if AnalysisResult.is_presentation_error(result, target): return DATA.PRESENTATION_ERROR Log.analysis_result_log('ANALYSIS : 5') return DATA.ACCEPT