はじめに
AtCoderで自分の書いたコードが正しいかどうかを与えられたサンプルケースで毎回試すわけだが、正直面倒くさい。
かといって、面倒くさがって一部しか試さず提出してしまうとWAになってしまうことがある。
そこで有志が開発したonline-judge-toolsを使わせてもらい、テストケースを自動化する方法を備忘録的にまとめる。
#環境
・Windows10
・(C++)
#準備編
online-judge-toolsを使用するにあたり、Bashを扱える環境を準備する。
今回はWindows Subsystem for LinuxでUbuntuをインストールする。
インストールはWindows Subsystem for Linuxインストール手順を参考にした。
Ubuntuのインストールと更新を終えたら、次にg++
とpip3
をインストールする。
sudo apt install g++
sudo apt install python3-pip
私の環境ではインストールに30分ほどかかった。
次に、先ほど導入したpip3
を使ってonline-judge-toolsをインストールする。
sudo pip3 install online-judge-tools
oj --version
でバージョンが最新のものかを確認する。これで準備は完了である。
#online-judge-toolsを使ってみる
テストケースをスクレイピングできるか確かめる。
まずは、ファイルの保存先をわかりやすいところにするためcd
コマンドでディレクトリを移動する。
ex)
cd /mnt/c/users/{username}/desktop
次にoj
コマンドで適当な問題のサンプルケースをdlする。
ex)
oj dl https://atcoder.jp/contests/abc136/tasks/abc136_a
デスクトップにtest
というフォルダが生成されていて、中に.in .out形式のファイルがあれば動作確認は成功である。
#実践編
テストケースを実行したい.cpp
ファイルがある場所までcd
する。
ex)
cd /mnt/c/users/{username}/desktop/AtCoder
次に、g++
を使ってコンパイルする。
g++ {file}.cpp
その後、提出する問題のサンプルケースを取得する。
oj dl https://atcoder.jp/contests/abc***/tasks/abc***_*
サンプルケースをテストする。
oj test
#最後に
導入はそこそこ大変だが、実際にonline-judge-toolsを使ってみると非常にはかどる。
さらにシェルスクリプトを組み合わせるとさらに効率化できる(時間があれば別記事で紹介する)。