Edited at

AtCoderのサンプルケースを自動でテストさせてみる(Win10&C++)


はじめに

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を使ってみると非常にはかどる。

さらにシェルスクリプトを組み合わせるとさらに効率化できる(時間があれば別記事で紹介する)。