LoginSignup
9
11

More than 5 years have passed since last update.

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

Last updated at Posted at 2014-11-11

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

基本はこれ
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"

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

9
11
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
11