core: 支持显示时空限制 (#65)

虽然有点丑,但是能用
This commit is contained in:
undefined committed 2021-04-10 18:44:07 +08:00
1 parent d5c5b3fd47
commit 1c89596cb3
20 files changed
+84 -59

No files matched your search

+12 -10
View File
@@ -21,24 +21,26 @@ export async function parseConfig(config: string | ProblemConfig) {
let cfg: ProblemConfig = {};
if (typeof config === 'string') {
// TODO should validate here?
cfg = readYamlCases(load(config) as Record<string, any>) as ProblemConfig;
cfg = await readYamlCases(load(config) as Record<string, any>) as ProblemConfig;
} else cfg = config;
if (cfg.cases) {
for (const c of cfg.cases) {
result.memoryMax = Math.max(result.memoryMax, c.memory);
result.memoryMin = Math.min(result.memoryMin, c.memory);
result.timeMax = Math.max(result.timeMax, c.time);
result.timeMin = Math.min(result.timeMin, c.time);
result.count++;
}
} else if (cfg.subtasks) {
if (cfg.subtasks.length) {
for (const subtask of cfg.subtasks) {
result.memoryMax = Math.max(result.memoryMax, subtask.memory);
result.memoryMin = Math.min(result.memoryMin, subtask.memory);
result.timeMax = Math.max(result.timeMax, subtask.time);
result.timeMin = Math.min(result.timeMin, subtask.time);
}
} else if (cfg.time || cfg.memory) {
if (cfg.time) result.timeMax = result.timeMin = cfg.time as unknown as number;
if (cfg.memory) result.memoryMax = result.memoryMin = cfg.memory as unknown as number;
}
if (result.memoryMax < result.memoryMin) {
result.memoryMax = result.memoryMin = 256;
}
if (result.timeMax < result.timeMin) {
result.timeMax = result.timeMin = 1000;
}
return result;
}
global.Hydro.lib.testdataConfig = { parseConfig };