You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Hydro/packages/hydrojudge/src/testlib.ts

32 lines
1.3 KiB
TypeScript

import * as STATUS from './status';
export function parse(output: string, fullscore: number) {
let status = STATUS.STATUS_WRONG_ANSWER;
let score = 0;
let message = output;
if (output.startsWith('ok ')) {
status = STATUS.STATUS_ACCEPTED;
score = fullscore;
} else if (output.startsWith('wrong answer ')) {
message = output.split('wrong answer ')[1] || '';
} else if (output.startsWith('wrong output format ')) {
message = `PE ${output.split('wrong output format ')[1] || ''}`;
} else if (output.startsWith('partially correct ')) {
message = `PC ${output.split('partially correct ')[1] || ''}`;
const p = +output.split('partially correct (')[1].split(')')[0];
score = Math.floor(fullscore * (p / 200));
} else if (output.startsWith('points ')) {
const p = +output.split('points ')[1].split(' ')[0];
if (p === 100) {
status = STATUS.STATUS_ACCEPTED;
score = fullscore;
const base = output.split('points ')[1] || '';
message = base.substr(base.indexOf(' '), 1024);
} else {
message = `partially correct ${output.split('points ')[1] || ''}`;
score = Math.floor(fullscore * (p / 100));
}
}
return { status, score, message };
}