TopCoderのサーバーでテストすることは出来るのだが、
- 2時間に1回しかサーバーでテストできない。(Example testの場合は、15分に1回)
- queueに人が溜まっていると待たないといけない
- 採点されるテストケースは、Full Submit Testのテストケースより多い
の理由からローカルで自動テストスクリプトを作って走らせる人が多いようだ。
昨年のTCOで作ったはずだが、どこかに行ってしまったので今日作った。今度はどこかに行ってしまわないようにブログにあげておく。
テストを走らせる処理は、windowsのバッチスクリプト
テスト結果のパースはperlで書きました。
ローカルマシンよりTopcoderサーバーの方が断然早いのでTime Limitについては何らかの補正が必要か??
@ECHO OFF
echo System Test Starts..
:: set variables
SET MAX_SEED=100
SET SEED=0
SET OUTPUT=%1.txt
:: solve problems
:LOOP
echo Solving #%SEED% ....
IF %SEED%==0 echo SEED = %SEED% > %OUTPUT%
IF NOT %SEED%==0 echo SEED = %SEED% >> %OUTPUT%
java -jar hogehogeVis.jar -exec "hogehoge.exe" -seed %SEED% -novis >> %OUTPUT%
SET /A SEED=%SEED%+1
IF %SEED%==%MAX_SEED% GOTO LOOPEND
GOTO LOOP
:LOOPEND
echo System Test Ends!
echo -----------------------
echo [Overall Result]
perl parse.pl %1
open(INPUT, "<" . $ARGV[0] . ".txt");
@list = <INPUT>;
$pointSum = 0;
$timeOver = 0;
foreach $line( @list ) {
if ($line =~ /(^Time)/) {
$line =~ /([0-9\.]+)/;
$time = $1;
if ($time > 10) {
$timeOver++ ;
}
}
elsif ($line =~ /^Score/) {
$line =~ /([0-9\.]+)/;
$point = $1;
$pointSum += $point
}
}
print "Point: " . $pointSum . "\n";
print "Time Over: " . $timeOver . "\n";
MAX_SEEDは、TopCoder上のFull Submissionでは100、System Testでは1000くらいだと思う。
0 件のコメント:
コメントを投稿