MCPcopy Create free account
hub / github.com/LanceLRQ/deer-executor / generateFinallyResult

Method generateFinallyResult

executor/analysis.go:199–241  ·  view source on GitHub ↗

计算判题结果

(result *commonStructs.JudgeResult, exitcodes []int)

Source from the content-addressed store, hash-verified

197
198// 计算判题结果
199func (session *JudgeSession) generateFinallyResult(result *commonStructs.JudgeResult, exitcodes []int) {
200 var (
201 ac, pe, wa int = 0, 0, 0
202 )
203 for _, exitcode := range exitcodes {
204 // 如果,不是AC、PE、WA
205 if exitcode != constants.JudgeFlagWA && exitcode != constants.JudgeFlagPE && exitcode != constants.JudgeFlagAC {
206 //直接应用结果
207 result.JudgeResult = exitcode
208 return
209 }
210 if exitcode == constants.JudgeFlagWA {
211 wa++
212 }
213 if exitcode == constants.JudgeFlagPE {
214 pe++
215 }
216 if exitcode == constants.JudgeFlagAC {
217 ac++
218 }
219 }
220 // 在严格判题模式下,由于第一组数据不是AC\PE就会直接报错,因此要判定测试数据是否全部跑完。
221 if len(exitcodes) != len(session.JudgeConfig.TestCases) {
222 // 如果测试数据未全部跑完
223 result.JudgeResult = constants.JudgeFlagWA
224 } else {
225 // 如果测试数据未全部跑了
226 if wa > 0 {
227 // 如果存在WA,报WA
228 result.JudgeResult = constants.JudgeFlagWA
229 } else if pe > 0 { // 如果PE > 0
230 if !session.JudgeConfig.StrictMode {
231 // 非严格模式,报AC
232 result.JudgeResult = constants.JudgeFlagAC
233 } else {
234 // 严格模式下报PE
235 result.JudgeResult = constants.JudgeFlagPE
236 }
237 } else {
238 result.JudgeResult = constants.JudgeFlagAC
239 }
240 }
241}

Callers 1

RunJudgeMethod · 0.95

Calls

no outgoing calls

Tested by

no test coverage detected