環境作りなおすたびに毎回ググってるのでまとめる.
基本はこれ
http://gulfweed.starlancer.org/d/index.php?itemid=10
プラグインを拾ってくる
以下からTZTester.jar
,FileEdit.jar
, CodeProcessor.jar
の3つを拾ってくる.
http://community.topcoder.com/tc?module=Static&d1=applet&d2=plugins
ちなみに私は必要なファイルや過去のコードなどをDropboxにつっこんであります.
CommonClasspathの設定
CommonClasspathにTZTester.jar
とFileEdit.jar
へのパスを設定する.
:
で区切って複数指定する.Browse
ボタンで選択してもOK.
例:/Users/tac/Dropbox/topcoder/TZTester.jar:/Users/tac/Dropbox/topcoder/FileEdit.jar
Pluginを追加
Arenaの Options
-> Editor
-> Editor Preferences
-> Add
で Enter Plugin Information
を開いて以下のように入力.
- Name:
CodeProcessor
- EntryPoint:
codeprocessor.EntryPoint
- ClassPath: CodeProcessor.jarへのパス(例:
/Users/tac/Dropbox/topcoder/CodeProcessor.jar
)
Pluginの設定
上記で追加された CodeProcessor
を選択した状態でConfigure
ボタンを押す.
CodeProcessor Configuration
Editor EntryPoint: に fileedit.EntryPoint
と入力して 、右隣のConfigure
ボタンを押す.
FileEdit Configuration
Enter directory to read/write problems to: に、ソースを置くディレクトリへのパスを指定する.
例:/Users/tac/Dropbox/topcoder
次に、Code Template タブでテンプレートを指定する.
私はC++を使うので、 LanguageにC++を指定してテンプレートをコピペする.
ちなみにこんなかんじにしています.
# include <cstdio>
# include <cstdlib>
# include <cmath>
# include <climits>
# include <cfloat>
# include <map>
# include <utility>
# include <set>
# include <iostream>
# include <memory>
# include <string>
# include <vector>
# include <algorithm>
# include <functional>
# include <sstream>
# include <complex>
# include <stack>
# include <queue>
using namespace std;
class $CLASSNAME$ {
public:
$RC$ $METHODNAME$($METHODPARMS$) {
}
$TESTCODE$
};
// BEGIN CUT HERE
int main() {
$CLASSNAME$ ___test;
___test.run_test(-1);
}
// END CUT HERE
テンプレートを入力したらSave
-> Close
で閉じる.
再び CodeProcessor Configuration
Add
ボタンを押すと、CodeProcessor Script
に空欄が追加されるので、以下を入力する.
tangentz.TZTester
Verity ボタンを押してこんな表示が出ればOK
Class: tangentz.TZTester
Method configuration: not found
Method preProcess: found
Method postProcess: found
Method getUserDefinedTags: found
Please specify class for the code processor
が表示される場合はどっかおかしいです.
最後にSave
ボタンを押して閉じる.その後Arenaを再起動して設定を反映する.
使いかた
適当に問題を開くと、Enter directory to read/write Problems to:
で指定したディレクトリに、開いた問題のClassNameでファイルが作られる.
中身はさっき登録したテンプレートが元になっている.
あとは、そのファイルを好きなエディタで編集して保存するだけ.
保存するとArenaに反映されるので、CompileしたりTestしたりSubmitすればOK.
テスト
テンプレートにはテストケースとエントリポイントが挿入されてるので、g++とかjavacとかでコンパイルして実行すればテストできる.
ちなみに私は、こんなかんじのスクリプト書いてテストしています.
# !/bin/sh
echo $1
g++ -o $1.out $1 && ./$1.out
rm $1.out
結果はこんな感じ.
% ./test.sh Containers.cpp
Test Case #0...PASSED
Test Case #1...FAILED
Expected: "3"
Received: "0"
Test Case #2...FAILED
Expected: "7"
Received: "0"
Test Case #3...FAILED
Expected: "3"
Received: "0"
おしまい.結構長いな...