エンジニアのブログです。

シンプルな競プロの環境構築 (C++)

Posted:

競プロ(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 JUDGELibrary 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などもご自由にお送りください。

https://github.com/hareku/cpp-algorithm


About me
Creative Commons License

This blog's source code is published on GitHub.