TopCoder Competition Arena 外部エディタの設定


環境作りなおすたびに毎回ググってるのでまとめる.

基本はこれ
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.jarFileEdit.jarへのパスを設定する.
:で区切って複数指定する.Browseボタンで選択してもOK.

例:/Users/tac/Dropbox/topcoder/TZTester.jar:/Users/tac/Dropbox/topcoder/FileEdit.jar

Pluginを追加

Arenaの Options -> Editor -> Editor Preferences -> AddEnter 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++を指定してテンプレートをコピペする.
ちなみにこんなかんじにしています.

template.cpp
#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とかでコンパイルして実行すればテストできる.

ちなみに私は、こんなかんじのスクリプト書いてテストしています.

test.sh
#!/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"

おしまい.結構長いな...