Home

Awesome

オンラインジャッジ補助スクリプト OnlineJudgeHelper

1. はじめに

このスクリプトは各種オンラインジャッジを利用する際、 サンプル入出力データを用いたテストやソースコードの提出等を 素早く行うことを目的に作りました。 まだ未完成のスクリプトですのでパッチ等は大歓迎です。

2. 仕様

2.1. 機能

2.2. 対応オンラインジャッジ

3. 使い方

    $ ./oj.py --onlinejudgename [contest_id] problem_id [options...]

例:

    $ ./oj.py --atcoder arc001 arc001_1 -i atcoder-arc001-A.cpp
    $ ./oj.py --yukicoder 9002 -i yukicoder9002.cpp -e 1e-4

contest_id,problem_idに指定する値はオンラインジャッジ毎に異なります。 大半は問題ページのURLの一部です。

オンラインジャッジオプション名contest_id,problem_idに指定する値
PKU JudgeOnline--pojhttp://acm.pku.edu.cn/JudgeOnline/problem?id=[ problem_id ]
CodeForces--codeforceshttp://codeforces.com/contest/[ contest_id ]/problem/[ problem_id ]
MJudge--mjudgehttp://m-judge.maximum.vc/problem.cgi?pid=[ problem_id ]
AOJ--aojhttp://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=[ problem_id ]
CodeChef--codechefhttp://www.codechef.com/[ contest_id ]/problems/[ problem_id ]
ImoJudge--imojudgehttp://judge.imoz.jp/page.php?page=view_problem&pid=[ problem_id ]&cid=[ contest_id ]
AtCoder--atcoderhttp://[ contest_id ].contest.atcoder.jp/tasks/[ problem_id ]
ZOJContest--zojcontesthttp://acm.zju.edu.cn/onlinejudge/showContestProblem.do?problemId=[ problem_id ]
NPCA Judge--npcahttp://judge.npca.jp/problems/view/[ problem_id ]
KCS--kcshttp://kcs.miz-miz.biz/contest/[ contest_id ]/view_problem/[ problem_id ]
yukicoder--yukicoderproblem_id=問題番号(No.xx 問題名 のxx部分)(http://yukicoder.me/problems/no/[ problem_id ])

AtCoderのproblem_idはarc042_aのようにcontest_idを含む形になっていることが多いですが、単にaとだけ指定することも可能です。

3.1. 初めて使う場合

設定ファイルをsetting.jsonという名前で作成し、 oj.pyと同じディレクトリに配置して下さい。 あるいは.onlinejudgehelper.setting.jsonという名前で、ホームディレクトリ直下に配置して下さい。 内容は各種オンラインジャッジのユーザーID、パスワード、起動するブラウザを json形式で書いたものです。

例:

    {
      "atcoder":{"user_id":"nodchip","password":"hogehoge", "browser":"C:/Users/nodchip/AppData/Local/Google/Chrome/Application/chrome.exe"},
      "zoj":{"user_id":"nodchip","password":"fufagufa", "browser":"C:/Users/nodchip/AppData/Local/Google/Chrome/Application/chrome.exe"}
    }

また、setting.jsonを用いて、オプション--testcase-directory、オプション--source-file-nameの既定値を指定することもできます。

例:

    {
        "testcase_directory":"test",
        "source_file_name":"a.cpp",
    }

3.2. オプション

  -h, --help            ヘルプを出力します
  -c, --create-solution-template-file
                        解答ソースコードのコンパイルと
                        サンプル入出力データとの一致確認を行います
  -s, --submit          解答ソースコードを提出します
  -a, --add-test-case-template
                        入出力データのひな形ファイルを追加作成します
  -i SOURCE_FILE_NAME, --source-file-name=SOURCE_FILE_NAME
                        ソースコードファイル名を指定します
  --setting-file-path=SETTING_FILE_PATH
                        設定ファイルのパスを指定します
  --testcase-directory=TESTCASE_DIRECTORY
                        テストケースを置くディレクトリを指定します
  -t, --titech-pubnet   東工大内ネットワークからプロキシを使用して接続します
  -e FLOATING_POINT     許容誤差を指定して浮動小数バリデータを使用します
  -d, --download        サンプル入出力データのダウンロードのみ行います

3.3. 色について

colormaというpyhtonのライブラリがインストールしてあれば、テストの実行の際に色が付きます。 インストールの際は2.xと3.xを間違えないように注意してください。

3.4. 補完について

zsh用の補完設定ファイルがあります。 completionというディレクトリをfpathに追加すれば有効になります。antigen等を用いてインストールすることも可能です。

4. その他

OnlineJudgeHelperは幾つかのブログで紹介されました。 この場を借りて御礼申し上げます。