From d0b8bd206bbbb0373f11a71c499766b9cfa41c4e Mon Sep 17 00:00:00 2001 From: undefined Date: Fri, 5 Sep 2025 23:22:24 +0800 Subject: [PATCH] judge: optimize strip performance --- packages/hydrojudge/src/checkers.ts | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/packages/hydrojudge/src/checkers.ts b/packages/hydrojudge/src/checkers.ts index 52ac15ca6..fc9b41bd9 100644 --- a/packages/hydrojudge/src/checkers.ts +++ b/packages/hydrojudge/src/checkers.ts @@ -58,12 +58,25 @@ function parseDiffMsg(msg: string) { const compareSh = `#!/bin/bash set -e +process_file() { + cat $1 | awk ' + /^$/{n=n RS}; + /./{ + printf "%s",n; n=""; + for (i=length; i>0; i--) { + c = substr($0, i, 1); + if (c != " " && c != "\\t" && c != "\\r") break + } + if (i == 0) print "" + else print substr($0, 1, i); + }' >$2 +} if [ "$1" = "BZ" ]; then - cat usrout | awk '{sub(/[ \\t\\r]+$/, ""); print $0;}' | awk '/^$/{n=n RS}; /./{printf "%s",n; n=""; print}' >usrout.processed - cat answer | awk '{sub(/[ \\t\\r]+$/, ""); print $0;}' | awk '/^$/{n=n RS}; /./{printf "%s",n; n=""; print}' >answer.processed + process_file usrout usrout.processed + process_file answer answer.processed else - cat usrout | awk '{sub(/[\\r]+$/, ""); print $0;}' >usrout.processed - cat answer | awk '{sub(/[\\r]+$/, ""); print $0;}' >answer.processed + cat usrout | awk '{sub(/\\r+$/, ""); print $0;}' >usrout.processed + cat answer | awk '{sub(/\\r+$/, ""); print $0;}' >answer.processed fi usrsize=$(wc -c < usrout.processed) stdsize=$(wc -c < answer.processed)