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 件のコメント:
コメントを投稿