Skip to content

NotLeonian/NicheLibrary

Repository files navigation

NicheLibrary

Actions Status GitHub Pages

C++ library for competitive programming

競技プログラミング用の C++ ライブラリです。

方針

このライブラリは、名前通りニッチなもののみを実装しています。

  • Luzhiled's Library, Nyaan's Library, cp-library-cpp のどれにも自分の求める要件を満たす実装が存在しないデータ構造、アルゴリズムのみを実装します。
  • 原則として、実装するのは competitive-verifier で verify できるデータ構造、アルゴリズムのみとします。

ドキュメントの言語

  • ドキュメントおよびソースコード中のコメントには原則日本語を使用します。
  • Issue および Pull Request の description は日本語以外でも構いません。

ローカルでの verify

ローカルでの verify は、以下のコマンドで行えます。

uv sync --group dev
bash .github/scripts/local_verify.sh

ローカル verify では、過去のローカル verify の結果を使用できます。
キャッシュは ${XDG_CACHE_HOME:-$HOME/.cache}/niche-library/local-verify/ 配下に保存され、リポジトリのパスと competitive-verifier の設定、使用するスクリプトおよびコンパイラの fingerprint ごとに分離されます。
.competitive-verifier/config.tomlpyproject.tomluv.lock.competitive-verifier/config.toml 上の CXXFLAGS などが変わった場合は、古い verify 結果は prev-result として使用されません。

GitHub Actions の verify は、GitHub Actions 専用のキャッシュに保存された結果を使用します。 ローカル verify のキャッシュは GitHub Actions では参照しません。

過去のローカル verify の結果を使わずにローカル verify を実行する場合は、--no-prev-result を指定します。 この場合も、今回の verify 結果は次回以降のローカル verify 用に保存されます。

bash .github/scripts/local_verify.sh --no-prev-result

キャッシュを削除して全ての verify を再実行する場合は、--full を指定します。

bash .github/scripts/local_verify.sh --full

clang-format の確認も同時に行う場合は、--format を指定します。

bash .github/scripts/local_verify.sh --format

yukicoder の問題を verify する場合は、YUKICODER_TOKEN を環境変数に設定する必要があります。
以下のコマンドであれば、環境変数として YUKICODER_TOKEN をシェルに残さずに実行することができます。

bash -c '
set -euo pipefail

IFS= read -r -e -s -p "YUKICODER_TOKEN: " YUKICODER_TOKEN
printf "\n"

export YUKICODER_TOKEN
bash .github/scripts/local_verify.sh "$@"
' _

オプションを渡す場合は、末尾の _ の後ろに追加します。
以下は、オプションに --no-prev-result を指定して実行する例です。

bash -c '
set -euo pipefail

IFS= read -r -e -s -p "YUKICODER_TOKEN: " YUKICODER_TOKEN
printf "\n"

export YUKICODER_TOKEN
bash .github/scripts/local_verify.sh "$@"
' _ --no-prev-result

Contributing

不具合の指摘または修正の Issue, Pull Request は歓迎します。
新規のデータ構造、アルゴリズムの追加についても条件を満たす場合は受け入れる可能性がありますが、追加の要望の Issue への対応は基本的に行いません。

詳しくは CONTRIBUTING.md を参照してください。

ライセンス

CC0-1.0 license

About

C++ library for competitive programming

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Contributors

Languages