シンプルな競プロの環境構築 (C++)
競プロ(AtCoderやCodeforces)の環境構築をご紹介します。 使い方は下記のGitHubを参照してください。ざっくりと特徴を紹介していきます。
https://github.com/hareku/cpp-algorithm
必要なのは VSCode Remote Container のみ
WindowsでもMac OSでも、VSCode Remote Containerさえ使えればOKです。これはDocker内でVSCodeを実行できるので、ローカルに色々インストールせずとも、拡張機能による言語補完などが可能です。
Windowsは、MacやLinuxに比べてツールのインストールが大変なので、Dockerが使えるようになると非常に便利です。VSCode以外で使いたい方はGitHubを参照してください。
マクロやライブラリを別ファイルに分割
競プロでは1つのファイルを提出する形式なので、どうしてもメインファイルが肥大化しがちです。
そこでverification-helper(https://github.com/online-judge-tools/verification-helper)が提供するバンドル機能を使って、#include
されたファイルを1つにまとめています。これにより、マクロ関数や各アルゴリズムを別ファイルとして分割できます。
ライブラリの自動テスト
先にも挙げたverification-helperでは、AIZU ONLINE JUDGEやLibrary Checkerなどの問題を使って、コマンドラインから自動テストを行えます。自分はGitHub Actionsを使って各ライブラリをCIでも自動テストしています。
テストコードはライブラリと別ファイルとして切り出せるので、これまたライブラリがシンプルに保てるわけです。
AtCoderの公式ライブラリも使用可能
AtCoderではC++ユーザー向けに公式ライブラリを提供しています。(https://github.com/atcoder/ac-library)
こちらもビルド時にgit submoduleとして追加したac-library
をリンクしているので、#include <atcoder/all>
とすればローカルでも提出時でも使用できます。
おわりに
ライセンスは特に変更がない限りApache License 2.0ですので、自由に改変してくださって構いません。Pull Requestなどもご自由にお送りください。
This blog's source code is published on GitHub.