自分用の備忘録。テストケースの自動ダウンロードと自動テスト、提出がすべてコマンドラインでできるようになる
環境構築編
-
(前提) windowsならwsl2内で作業する。pythonとnodeは適宜インストールしておく
-
Pythonとnpmにパスが通っているか確認
Terminal window python3 -VTerminal window npm -version -
競技プログラミングの提出・テスト自動化を支援するツールたちをインストール
Terminal window npm install -g atcoder-cliTerminal window pip3 install online-judge-tools -
インストール確認、command not foundが出る場合は適宜ターミナルを再起動
Terminal window acc -vTerminal window oj --version -
accとojが連携できているか確認
Terminal window acc check-oj -
accとojそれぞれでatcoderにログイン
Terminal window acc loginTerminal window oj login https://beta.atcoder.jp/ -
accがテストケースをダウンロードする際、該当コンテストの全問題をダウンロードするようにする
Terminal window acc config default-task-choice all -
accのテストケースをダウンロードするディレクトリ名がojと異なるので、oj側に合わせる
Terminal window acc config default-test-dirname-format test -
テンプレートを作る
Terminal window cd `acc config-dir`Terminal window mkdir <your-template-name> && cd $_Terminal window touch template.json main.py -
template.jsonはこんな感じ。main.pyは空ファイルのままで大丈夫
{"task": {"program": ["main.py"],"submit": "main.py"}} -
作ったテンプレートを設定する
Terminal window acc config default-template <your-template-name> -
作業フォルダと仮想環境を作る
Terminal window mkdir <new-folder> && cd $_Terminal window python3 -m venv venvTerminal window source venv/bin/activate -
AtCoderのサーバー上に入っているPythonのライブラリたちをローカルでも使えるようにする
Terminal window touch requirements.txt -
requirements.txtの中身
# https://img.atcoder.jp/file/language-update/language-list.htmlnumpy == 1.24.1scipy == 1.10.1networkx == 3.0sympy == 1.11.1sortedcontainers == 2.4.0more-itertools == 9.0.0shapely == 2.0.0bitarray == 2.6.2PuLP == 2.7.0mpmath == 1.2.1pandas == 1.5.2z3-solver == 4.12.1.0scikit-learn == 1.3.0cppyy == 2.4.1# ここまではPyPyでもPythonでも使えるやつ# ここからはPythonだけで使えるやつ、適宜消してねortools == 9.5.2237setuptools == 66.0.0torch == 1.13.1polars == 0.15.15lightgbm == 3.3.1gmpy2 == 2.1.5numba == 0.57.0 -
requirements.txtを参照してインストール
Terminal window pip3 install -r requirements.txt -
ac-library-pythonはpipで入らないからGitHubから持ってくる
Terminal window pip3 install git+https://github.com/not522/ac-library-python -
エイリアスを設定
Terminal window echo "alias ojt=\"oj t -c 'python3 main.py'\"" >> ~/.bashrcTerminal window echo 'alias accs="acc s -- main.py --language 5078 --yes --wait 1"' >> ~/.bashrcTerminal window source ~/.bashrc
環境構築(完)
実際に使ってみる編
-
試しに解いてみる
Terminal window acc new abc300 && $_/aTerminal window code main.py -
手元で実行する場合
Terminal window python3 main.py -
自動テスト
Terminal window ojt -
提出
Terminal window accs -
次の問題を解く
Terminal window cd ../b && code main.py