/// <summary> /// 从Response中解析JudgeTask /// </summary> /// <param name="jsonStr"></param> /// <returns></returns> private JudgeContext[] ParseTask(string jsonStr) { JArray jArray = JArray.Parse(jsonStr); if (jArray.Count == 0) { return(new JudgeContext[0]); } JObject jObject = jArray[0] as JObject; if (!CheckTaskJObject(jObject)) { return(new JudgeContext[0]); } SDNUOJTaskEntity taskEntity = jObject.ToObject <SDNUOJTaskEntity>(); JudgeContext task = JudgeContextFactory.Create( int.Parse(taskEntity.SubmitId), int.Parse(taskEntity.ProblemId), taskEntity.DataVersion, taskEntity.Language.Substring(0, taskEntity.Language.Length - 2), taskEntity.SourceCode, taskEntity.Author, int.Parse(taskEntity.TimeLimit), int.Parse(taskEntity.MemoryLimit), false, false, bool.Parse(taskEntity.DbJudge)); return(new[] { task }); }
private JudgeContext CreateJudgeContext(string submitId) { GetSolutionInfo(submitId, out string problemId, out string author, out string lang); GetProblemInfo(problemId, out int timeLimit, out int memoryLimit, out bool spj); string sourceCode = GetSolutionSourceCode(submitId); string dataMd5 = GetTestDataMd5(problemId); JudgeContext context = JudgeContextFactory.Create( submitId, problemId, dataMd5, lang, sourceCode, author, timeLimit, memoryLimit, false, spj); UpdateSolution(submitId, 3, 0, 0, 0.0); return(context); }
/// <summary> /// 根据SubmitID获取JudgeTask /// </summary> private JudgeContext GetJudgeTask(string submitId) { GetSolutionInfo(submitId, out string problemId, out string author, out string lang); string sourceCode = GetSolution(submitId); GetProblemInfo(problemId, out int timeLimit, out int memoryLimit, out bool spj); string dateMd5 = GetTestDataMd5(problemId); JudgeContext task = JudgeContextFactory.Create( submitId, problemId, dateMd5, lang, sourceCode, author, timeLimit, memoryLimit, false, spj); Authenticator.Instance.UpdateSolution(submitId, 3, 0, 0, 0.0); return(task); }
private JudgeContext[] CreateJudgeContexts(string jsonResp) { JArray taskJArray = JArray.Parse(jsonResp); if (taskJArray.Count == 0 || !(taskJArray[0] is JObject)) { return(new JudgeContext[0]); } SdnuojJudgeTask task = taskJArray[0].ToObject <SdnuojJudgeTask>(); if (task == null) { return(new JudgeContext[0]); } JudgeContext context = JudgeContextFactory.Create( task.SubmitId, task.ProblemId, task.DataVersion, task.Language.Substring(0, task.Language.Length - 2), task.SourceCode, task.Author, int.Parse(task.TimeLimit), int.Parse(task.MemoryLimit), false, false, bool.Parse(task.DbJudge)); return(new[] { context }); }
/// <summary> /// 从Response中解析Task /// </summary> /// <param name="data">来自服务器的JObject任务数组</param> /// <returns>JudgeContexts</returns> private JudgeContext[] CreateTaskContexts(JToken data) { InnerJudgeTask[] innerJudgeTasks = data.ToObject <InnerJudgeTask[]>(); if (innerJudgeTasks == null || innerJudgeTasks.Length == 0) { return(new JudgeContext[0]); } List <JudgeContext> judgeTasks = new List <JudgeContext>(); foreach (var item in innerJudgeTasks) { JudgeContext task = JudgeContextFactory.Create( item.SubmitId, item.ProblemId, item.DataVersion, item.Language, item.SourceCode, item.Author, item.TimeLimit, item.MemoryLimit, item.JudgeAllCases, item.JudgeType); judgeTasks.Add(task); } return(judgeTasks.ToArray()); }