Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
87 changes: 87 additions & 0 deletions .claude/commands/make-docs.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
$ARGUMENTS で指定された .hpp ファイルに対応する .md ドキュメントを作成してください。

引数が空の場合はエラーメッセージを出して終了してください。
引数にはグロブパターン(例: `src/math/*.hpp`)や複数ファイルも指定可能です。

## 手順

1. 対象の .hpp ファイルを読み、公開インターフェース(クラス・関数・定数)を把握する
2. .hpp と同じディレクトリ以下の `test/` を探索し、対応するテストファイル (`*.test.cpp`) があれば読む
- 対応の判定: テストファイルが `#include` で対象 .hpp を参照しているか
- `#define PROBLEM` の URL をすべて収集する
3. 既存の .md ファイルが同ディレクトリにあれば読み、内容を尊重しつつ更新する(上書きではなく差分更新)
4. 以下の規約に従って .md ファイルを作成し、.hpp と同じディレクトリに配置する
- ファイル名: .hpp と同名で拡張子を `.md` に変える(例: `prime.hpp` → `prime.md`)

## 規約

### Front Matter(必須)

```yaml
---
title: English Name (日本語名)
documentation_of: ./filename.hpp
---
```

- `title`: 英語名 + 括弧で日本語の説明。例: `Primitive root modulo $n$ (原始根の発見)`
- `documentation_of`: 必ず `./filename.hpp` の形式(相対パス、同一ディレクトリ内)

### 冒頭の概要(必須)

Front matter 直後に、1〜2 文でこのライブラリが何をするか簡潔に書く。
計算量があれば $O(\cdot)$ 記法で明記する。LaTeX 数式を積極的に使う。

良い例:

- `$10^{18}$ 以下の正の整数を素因数分解する.`
- `自然数 $N$ の入力に対し,$O(N^{2/3})$ で素数計数関数 $\pi(x)$ の値を計算.`

悪い例:

- `素因数分解をするライブラリです.` (何の?制約は?)
- 計算量を省略している

### 本文セクション(任意、必要に応じて)

以下のセクションを必要に応じて記載する。すべて必須ではない。
**ライブラリが単純(ラッパー関数1つ等)なら概要 + 問題例だけで十分。無理にセクションを増やさない。**

#### アルゴリズムの説明

- `## 原理`, `## ナイーブな説明`, `## 実装されているアルゴリズムについて` 等のセクション名
- 数式を多用してアルゴリズムの概要を説明
- 背景知識の説明を含めることもある
- コードの実装詳細(変数名の逐一説明等)ではなく、数学的・アルゴリズム的なアイデアを書く

#### 使用方法 (`## 使用方法`)

- C++ コードスニペットで使い方を示す
- 関数シグネチャ、引数の意味、返り値を説明
- 複数の関数がある場合はサブセクション (`###`) で分ける
- テンプレート引数がある場合はその制約も記載する

### 問題例セクション(強く推奨)

```markdown
## 問題例

- [Problem Name - Judge](URL)
```

- テストファイルの `#define PROBLEM` URL を必ず含める
- 他の関連問題があれば追加してよい
- テストファイルが見つからなかった場合はこのセクションを省略する

### 参考文献セクション(任意)

`## 参考文献・リンク` または `## リンク` の見出しで記載する。

### 文体・スタイル規約

- 日本語で記述(技術用語・変数名は英語のまま)
- 句読点は「,」「.」(全角カンマ・ピリオド)
- LaTeX 数式を積極的に使用(`$...$` インライン、`$\displaystyle ...$` でブロック風)
- コードブロックは ` ```cpp ` で囲む
- セクション見出しは `##` から始める(`#` は使わない)
- 簡潔に書く。冗長な説明は避ける
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
.PHONY: format

format:
find . -name "*.hpp" -o -name "*.cpp" -not -iwholename "*/.verify-helper/*" | xargs clang-format --Werror -i -style=file
find . -type f \( -name "*.hpp" -o -name "*.cpp" \) -not -iwholename "*/.verify-helper/*" | xargs clang-format --Werror -i -style=file
2 changes: 1 addition & 1 deletion data_structure/wavelet_matrix.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -326,7 +326,7 @@ template <class Int> class wavelet_matrix {
wavelet_matrix<int> wm;

wm.build();
vector tmp(wm.D(), vector<BIT<T>>(wm.N()));
vector tmp(wm.D(), BIT<T>(wm.N()));
wm.apply(i, j, [&](int d, int idx) { tmp[d].add(idx, wx); }); // point add
T ret{};
wm.prod(l, r, u, [&](int d, int l0, int r0) { ret += tmp[d].sum(l0, r0); }); // range sum
Expand Down
2 changes: 1 addition & 1 deletion multithread/parallel_runner.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ template <ISolver Solver> class ParallelRunner {

/* Usage:
struct Solver {
using Ret = int;
using Ret = lint;

void read_stdin() {
// read input using std::cin
Expand Down
2 changes: 1 addition & 1 deletion rational/rational_number.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
#include <cassert>
#include <limits>

// Rational number + {infinity(1 / 0), -infiity(-1 / 0), nan(0 / 0)} (有理数)
// Rational number + {infinity(1 / 0), -infinity(-1 / 0), nan(0 / 0)} (有理数)
// Verified: Yandex Cup 2022 Final E https://contest.yandex.com/contest/42710/problems/K
template <class Int, bool AutoReduce = false> struct Rational {
Int num, den; // den >= 0
Expand Down
Loading