From a22400d2479adb26ed81d9a78260483f0059c941 Mon Sep 17 00:00:00 2001 From: undefined Date: Sun, 7 Mar 2021 21:54:22 +0800 Subject: [PATCH] judge: fix syzoj scoring --- packages/hydrojudge/package.json | 2 +- packages/hydrojudge/src/cases.ts | 2 +- packages/hydrojudge/src/checkers.ts | 6 +++--- packages/hydrojudge/src/service.ts | 5 +++-- 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/packages/hydrojudge/package.json b/packages/hydrojudge/package.json index e9f1db94d..1ffdc5587 100644 --- a/packages/hydrojudge/package.json +++ b/packages/hydrojudge/package.json @@ -1,7 +1,7 @@ { "name": "@hydrooj/hydrojudge", "bin": "bin/hydrojudge.js", - "version": "2.4.9", + "version": "2.4.10", "os": [ "linux" ], diff --git a/packages/hydrojudge/src/cases.ts b/packages/hydrojudge/src/cases.ts index 899f7b867..68582c624 100644 --- a/packages/hydrojudge/src/cases.ts +++ b/packages/hydrojudge/src/cases.ts @@ -226,7 +226,7 @@ export async function readYamlCases(folder: string, cfg: Dictionary = {}, a } if (cfg.cases) { config.subtasks = [{ - score: parseInt(cfg.score, 10) || Math.floor(100 / config.count), + score: parseInt(cfg.score, 10) || Math.floor(100 / cfg.cases.length), time_limit_ms: parseTimeMS(cfg.time || '1s'), memory_limit_mb: parseMemoryMB(cfg.memory || '512m'), cases: [], diff --git a/packages/hydrojudge/src/checkers.ts b/packages/hydrojudge/src/checkers.ts index d69c47a7e..ceb6a79d8 100644 --- a/packages/hydrojudge/src/checkers.ts +++ b/packages/hydrojudge/src/checkers.ts @@ -171,9 +171,9 @@ const checkers: Record = { }, }); if (status !== STATUS.STATUS_ACCEPTED) throw new SystemError('Checker returned {0}.', [status]); - const score = parseInt(stdout, 10); - status = score === config.score ? STATUS.STATUS_ACCEPTED : STATUS.STATUS_WRONG_ANSWER; - return { status, score, message: stderr }; + const score = +stdout; + status = score === 100 ? STATUS.STATUS_ACCEPTED : STATUS.STATUS_WRONG_ANSWER; + return { status, score: Math.floor((score * config.score) / 100), message: stderr }; }, async testlib(config) { diff --git a/packages/hydrojudge/src/service.ts b/packages/hydrojudge/src/service.ts index 47ebdb53e..7da2c67cd 100644 --- a/packages/hydrojudge/src/service.ts +++ b/packages/hydrojudge/src/service.ts @@ -12,7 +12,7 @@ import * as tmpfs from './tmpfs'; import { FormatError, CompileError, SystemError } from './error'; import { STATUS_COMPILE_ERROR, STATUS_SYSTEM_ERROR } from './status'; import { compilerText } from './utils'; -import readYamlCases from './cases'; +import readCases from './cases'; import { getConfig } from './config'; declare module 'hydrooj/dist/interface' { @@ -221,11 +221,12 @@ async function postInit() { this.stat.cache_start = new Date(); this.folder = await cacheOpen(this.domainId, this.pid, this.data); this.stat.read_cases = new Date(); - this.config = await readYamlCases( + this.config = await readCases( this.folder, this.config, { next: this.next }, ); + console.log(this.config); this.stat.judge = new Date(); await judge[this.config.type || 'default'].judge(this); }