📌

AtCoder 環境構築[online-judge-tools][atcoder-cli][Java]

2023/03/11に公開

online-judge-tools

インストール

pip install online-judge-tools

ログイン

oj login -u ${USERNAME} -p ${PASSWORD} "https://atcoder.jp/"

ログイン確認

oj login --check "https://atcoder.jp/"

[SUCCESS] You have already signed in. とログが出ればOK

atcoder-cli

インストール

npm install -g atcoder-cli

ディレクトリ作成とテストケースの取得

acc new ${CONTEST_ID}

競プロ典型90問のIDはtypical90となっており実行するとユーザ名とパスワードの入力を求められ問題を選択します。ログは以下のようになります。

$ acc new typical90
? username: YOUR_USERNAME
? password: [hidden]
typical90/contest.acc.json created.
create project of 競プロ典型 90 問
? select tasks 001 Yokan Party(★4)
[INFO] online-judge-tools 11.5.1 (+ online-judge-api-client 10.10.0)
[INFO] load cookie from: /Users/xxx/Library/Application Support/online-judge-tools/cookie.jar
[NETWORK] GET: https://atcoder.jp/contests/typical90/tasks/typical90_a
[NETWORK] 200 OK
[INFO] save cookie to: /Users/xxx/Library/Application Support/online-judge-tools/cookie.jar

[INFO] sample 0
[INFO] input: sample-1
3_34
1
8_13_26

...(略)

テスト実行

oj test -d ${TESTCASE_DIR} -c ${COMMAND}

提出

acc submit ${FILENAME}

問題追加

acc add

すべて追加するように設定を変更

acc config default-task-choice all

設定を元にもどす場合

acc config default-task-choice inquire

Java

Javaでの実行方法をメモしておきます。VSCodeでやっていきます。

VSCodeでJavaを実行するためにExtensionを追加します。
Extension Pack for Java をインストールして有効にします。

するとVSCodeがクラスファイルを作成してくれるようになり、コードからRunやDebugを実行できるようになります。一度、実行をしてコマンドを確認します。すると以下のようにVSCode開いているルートにディレクトリが移動された後に実行されており、

cd /Users/xxxx/xxx ; /usr/bin/env "/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java" -cp "/Users/xxxx/Library/Application Support/Code/User/workspaceStorage/xxx/redhat.java/jdt_ws/atcoder_xxx/bin" abc086.b.Main

ojでテストする際にディレクトリの移動があるとうまくいかないため、この例でいくと以下の実行部分だけをコピーしておき

/usr/bin/env "/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java" -cp "/Users/xxxx/Library/Application Support/Code/User/workspaceStorage/xxx/redhat.java/jdt_ws/atcoder_xxx/bin" abc086.b.Main

ojに渡してあげるとテストできました。

oj test -d tests -c '/usr/bin/env "/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java" -cp "/Users/xxxx/Library/Application Support/Code/User/workspaceStorage/xxx/redhat.java/jdt_ws/atcoder_xxx/bin" abc086.b.Main'
[INFO] online-judge-tools 11.5.1 (+ online-judge-api-client 10.10.0)
[INFO] 3 cases found

[INFO] sample-1
[INFO] time: 0.111476 sec
[SUCCESS] AC

[INFO] sample-2
[INFO] time: 0.119389 sec
[SUCCESS] AC

[INFO] sample-3
[INFO] time: 0.108690 sec
[SUCCESS] AC

[INFO] slowest: 0.119389 sec  (for sample-2)
[INFO] max memory: 23.908000 MB  (for sample-3)
[SUCCESS] test success: 3 cases

javaファイルの提出に関してはExtensionによってpackageが1行目に追加されてしまうので、それ以外をコピペしてブラウザから提出したほうがよさそうです。

もっとスマートな方法がありそうですが、とりあえず最低限の準備はできたということにしておきます。

Discussion