refactor(run): rename trim to isTrim and simplify output comparison

- Change boolean parameter name from 'trim' to 'isTrim' for better clarity
- Simplify output comparison logic by inlining ternary expression
This commit is contained in:
cfngc4594 2025-06-16 16:59:48 +08:00
parent 7f79b901b7
commit 0b9c338de4
4 changed files with 19 additions and 16 deletions

View File

@ -0,0 +1,9 @@
/*
Warnings:
- You are about to drop the column `trim` on the `Problem` table. All the data in the column will be lost.
*/
-- AlterTable
ALTER TABLE "Problem" DROP COLUMN "trim",
ADD COLUMN "isTrim" BOOLEAN NOT NULL DEFAULT false;

View File

@ -80,18 +80,15 @@ model Problem {
displayId Int @unique displayId Int @unique
difficulty Difficulty @default(EASY) difficulty Difficulty @default(EASY)
isPublished Boolean @default(false) isPublished Boolean @default(false)
trim Boolean @default(false) isTrim Boolean @default(false)
timeLimit Int @default(1000) timeLimit Int @default(1000)
memoryLimit Int @default(134217728) memoryLimit Int @default(134217728)
localizations ProblemLocalization[] localizations ProblemLocalization[]
templates Template[] templates Template[]
testcases Testcase[] testcases Testcase[]
submissions Submission[] submissions Submission[]
userId String? userId String?
user User? @relation(fields: [userId], references: [id], onDelete: SetNull) user User? @relation(fields: [userId], references: [id], onDelete: SetNull)

View File

@ -41,7 +41,7 @@ const problemData: Prisma.ProblemCreateInput[] = [
displayId: 1000, displayId: 1000,
difficulty: "EASY", difficulty: "EASY",
isPublished: true, isPublished: true,
trim: true, isTrim: true,
localizations: { localizations: {
create: [ create: [
{ {
@ -735,7 +735,7 @@ int main() {
displayId: 1001, displayId: 1001,
difficulty: "MEDIUM", difficulty: "MEDIUM",
isPublished: true, isPublished: true,
trim: true, isTrim: true,
localizations: { localizations: {
create: [ create: [
{ {
@ -1263,7 +1263,7 @@ int main() {
displayId: 1002, displayId: 1002,
difficulty: "HARD", difficulty: "HARD",
isPublished: true, isPublished: true,
trim: true, isTrim: true,
localizations: { localizations: {
create: [ create: [
{ {

View File

@ -29,7 +29,7 @@ const startRun = (
timeLimit: number, timeLimit: number,
memoryLimit: number, memoryLimit: number,
expectedOutput: string, expectedOutput: string,
trim: boolean, isTrim: boolean,
): Promise<Status> => { ): Promise<Status> => {
return new Promise<Status>((resolve, reject) => { return new Promise<Status>((resolve, reject) => {
runExec.start({ hijack: true }, async (error, stream) => { runExec.start({ hijack: true }, async (error, stream) => {
@ -72,10 +72,7 @@ const startRun = (
const exitCode = (await runExec.inspect()).ExitCode; const exitCode = (await runExec.inspect()).ExitCode;
const timeUsage = Date.now() - startTime; const timeUsage = Date.now() - startTime;
if (exitCode === 0) { if (exitCode === 0) {
let isCorrect = stdout === expectedOutput; const isCorrect = isTrim ? stdout.trim() === expectedOutput.trim() : stdout === expectedOutput;
if (trim) {
isCorrect = stdout.trim() === expectedOutput.trim();
}
await prisma.testcaseResult.create({ await prisma.testcaseResult.create({
data: { data: {
isCorrect, isCorrect,
@ -136,7 +133,7 @@ const executeRun = async (
timeLimit: number, timeLimit: number,
memoryLimit: number, memoryLimit: number,
testcases: Testcase[], testcases: Testcase[],
trim: boolean isTrim: boolean
): Promise<Status> => { ): Promise<Status> => {
for (const testcase of testcases) { for (const testcase of testcases) {
const inputs = await prisma.testcaseInput.findMany({ const inputs = await prisma.testcaseInput.findMany({
@ -175,7 +172,7 @@ const executeRun = async (
timeLimit, timeLimit,
memoryLimit, memoryLimit,
testcase.expectedOutput, testcase.expectedOutput,
trim isTrim
); );
if (status !== Status.RU) { if (status !== Status.RU) {
@ -234,7 +231,7 @@ export const run = async (
testcases: Testcase[] testcases: Testcase[]
): Promise<Status> => { ): Promise<Status> => {
const { runOutputLimit } = config; const { runOutputLimit } = config;
const { timeLimit, memoryLimit, trim } = problem; const { timeLimit, memoryLimit, isTrim } = problem;
await prisma.submission.update({ await prisma.submission.update({
where: { where: {
@ -255,6 +252,6 @@ export const run = async (
timeLimit, timeLimit,
memoryLimit, memoryLimit,
testcases, testcases,
trim isTrim
); );
}; };