Hello AtCoder and online-judge-tools/oj

2 min read読了の目安(約2100字

AtCoder を始めてみる。
ブラウザのテキストフィールドにコードを入力して…という方法を試した後、よりクールにいきたかったので online-judge-tools/oj を使って投稿してみた。

試した問題は、 AtCoder Beginners Selection の最初の練習問題 PracticeA (https://atcoder.jp/contests/abs/tasks/practice_1)。

oj のインストール

公式サイト に記された手順にしたがってインストールした。

テスト環境作成

online-judge-toolsを導入しよう! のアドバイスにしたがって、AtCoder用のディレクトリ atcoer と、その配下に今回の問題用のディレクトリ practiceA を作成した。

$ mkdir atcoder
$ cd atcoder
$ mkdir practiceA

そして、practiceA ディレクトリの下で、$ oj d {問題ページのURL} を実行した。

$ cd practiceA
$ oj d https://atcoder.jp/contests/abs/tasks/practice_1

この結果、practiceA 配下にテスト用データが格納された test ディレクトリがダウンロードされた。

プログラム作成

atcoder ディレクトリの下に、次のような内容の python プログラム practiceA.py (回答例そのもの)を作成した。

a = int(input())
b, c = map(int, input().split())
s = input()
print("{} {}".format(a+b+c, s))

ここまでで、atcoder/practiceA ディレクトリの下は次のようになっている。

$ ls -1R  
practiceA.py
test

./test:
sample-1.in
sample-1.out
sample-2.in
sample-2.out

テスト

atcoder/practiceA ディレクトリで次のようなコマンドを実行してテストする。

$ oj t -c "python3 practiceA.py" -d test

すると、コマンドの後に次のような結果が表示される。

[INFO] online-judge-tools 11.1.1 (+ online-judge-api-client 10.7.1)
[INFO] 2 cases found
time: illegal option -- f
usage: time [-lp] <command>
[WARNING] GNU time is not available: time

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

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

[INFO] slowest: 0.063664 sec  (for sample-2)
[SUCCESS] test success: 2 cases

AC はテストに通った事を意味している。

投稿

atcoder/practiceA ディレクトリで

$ oj s practiceA.py

と実行するだけでよい。
これにより、AtCoder に practiceA.py がアップロードされ、その合否判定結果がブラウザに表示される。

さらにクールに