📌
AtCoder 環境構築[online-judge-tools][atcoder-cli][Java]
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