Exemple #1
0
 def analysisResult(result, targetResult={}):
     """
     :param result: 要被验证的结果
     :param targetResult: 目标结果
     :return:对比的结果{0:超时,1:答案错,2:正确答案}
     """
     sysTime = None  # 存放运行的系统时间
     # 检测是否是被杀死而终结
     time = re.compile(r'Killed', re.X)
     Log.AnalysisResultLog("Result Analysis : " + str(result))
     Log.AnalysisResultLog("Result Type : " + str(type(result)))
     match = time.findall(result)
     if len(match) != 0:
         return ['Time Limit Exceeded', time]
     # 获取系统时间
     time = re.compile(r'sys\s*\d*m\d*.\d*s', re.X)
     match = time.findall(result)
     time = re.compile(r'\d*m\d*.\d*s', re.X)
     sysTime = time.findall(match[0])
     # 获取计算结果
     targetList = targetResult['answer']
     # 验证输出结果
     for item in targetList:
         pattern = re.compile("(?<![\S*])" + str(item) + "(?![\S*])", re.M)
         match = pattern.search(result)
         if match == None:
             return ['Wrong Answer', sysTime]
     # 验证输出数量
     pattern = re.compile(r'\n', re.X)
     match = pattern.findall(result)
     if len(match) - 5 != len(targetList):
         return ['Output Limit Exceeded', sysTime]
     # 验证格式是否出错
     pattern = re.compile(r'\n', re.X)
     match = pattern.split(result)
     for i in range(1, len(targetList)):
         matchStr = targetList[i]
         if len(str(matchStr)) != len(match[i]):
             return ['Presentation Error', sysTime]
     return ['Accepted', sysTime]