UUnionPebble
AIコーディングワークスペース

互いに素な成分のグループ化

番号付き頂点を無向接続に従って素集合データ構造でまとめます。

● ● ●UnionPebble●
ワークフロー · 互いに素な成分のグループ化 ×
def components(count, edges):
    if type(count) is not int or not 0 <= count <= 10000:
        raise ValueError("node count")
    pairs = list(edges)
    for pair in pairs:
        if len(pair) != 2 or any(type(v) is not int or not 0 <= v < count for v in pair):
            raise ValueError("edge endpoint")
    parent = list(range(count))
    def find(x):
        while parent[x] != x:
            parent[x] = parent[parent[x]]
            x = parent[x]
        return x
    for a, b in pairs:
        parent[find(b)] = find(a)
    groups = {}
    for node in range(count): groups.setdefault(find(node), []).append(node)
    return sorted(groups.values())
✳番号付き頂点を無向接続に従って素集合データ構造でまとめます。
✓ 変更内容適用前に確認 ↗
ワークスペースのイメージ
01

適用前に確認

実際の動作を期待する結果と比較します。検証に失敗した場合は、次の変更を加える前に原因を調べてください。

02

モデル

OpenAI互換またはAnthropicのエンドポイントを、ベースURLと必要なAPIキーで設定し、接続をテストします。ローカルのモデルサーバーは起動が必要です。リモートツールは別途データを送信する場合があります。

03

プロジェクト

孤立頂点、重複辺、空グラフを試し、結合前に不正な端点を拒否します。

ワークフロー

互いに素な成分のグループ化

ワークフロー ↗
ワークフロー
def components(count, edges):
    if type(count) is not int or not 0 <= count <= 10000:
        raise ValueError("node count")
    pairs = list(edges)
    for pair in pairs:
        if len(pair) != 2 or any(type(v) is not int or not 0 <= v < count for v in pair):
            raise ValueError("edge endpoint")
    parent = list(range(count))
    def find(x):
        while parent[x] != x:
            parent[x] = parent[parent[x]]
            x = parent[x]
        return x
    for a, b in pairs:
        parent[find(b)] = find(a)
    groups = {}
    for node in range(count): groups.setdefault(find(node), []).append(node)
    return sorted(groups.values())
AIコーディングワークスペース

グループ化の要件をレビュー可能なソフトウェア変更にする

UnionPebbleは、グループ化の要件、そのソースコード、利用側を一つの開発の会話に持ち込むWindows用AIコーディング作業環境です。アプリケーションが何を接続とみなし、何を受け取ることを期待するかの説明から始めます。グループを作るコードの変更を提案する前に、既存の表現を調べるようモデルに依頼してください。

具体的な作業ではcomponents.pyを使い、以前は別々だった2つのグループを結ぶ接続について検討できます。テストデータに孤立したノードを含め、期待する出力順序を明示します。この例は、数学的に等価な集合ならアプリケーションの直列化や表示のコードも満たすと決めつけずに、変更依頼を組み立てる助けになります。

それらの境界で提案をレビューします。受け付けるノード識別子、無効な辺、空のケースを確認し、関連するプロジェクトのチェックを実行してください。有用な結果には、要素が同じグループに属する理由と、返す構造が利用側に適合する理由の両方の説明が必要です。グループ化の動作を修正する依頼には、無関係な保存やインターフェースの変更を含めないでください。

対応するOpenAI互換またはAnthropicのエンドポイント経由でモデルに接続し、必要な場合は認証情報を指定します。そのサービスが提供していれば、拒否抑制を除去したAIモデルも作業の選択肢ですが、制約はプロバイダーに依存します。利用できるツールとコンテキストもモデルとサーバーに依存するため、調査範囲をその作業で実際に利用できるソースと証拠に絞ってください。

正常系の例を超えてグループ化を検討する

孤立したノードも出力に含めますか?

その期待を明示してください。辺の一覧に孤立ノードが現れなくても、アプリケーションはその存在を認識しているかもしれません。宣言されたノード数と孤立した例を含め、提案コードがそうした要素を結果から黙って捨てないようにしましょう。

等価なグループ順序でも呼び出し元を壊すことがありますか?

はい。利用側が安定した直列化、比較、表示順序に依存する場合です。順序がインターフェースの一部かを明示し、出力規則を確認してください。数学的な等価性だけでは、プロジェクトのスナップショットや後段の処理との互換性は証明できません。

範囲外の端点はどう扱うべきですか?

拒否する入力の動作を定義し、それがどこに通知されるか確認してください。この例は宣言したノード数に照らして識別子を検証します。例外だけでデータ提供者に有用なエラーが伝わると考えず、呼び出し元の応答をレビューしましょう。

グループを統合する接続はどう確認しますか?

影響を受けないグループも含め、元のグループと期待する統合後の構成要素を独立に書き出します。変更したコードでテストデータを実行し、順序は別に確認してください。テスト内で実装を繰り返さず、具体的な変更前後の結果をレビューできます。

Windows版をダウンロード ↗

UnionPebble · 更新日 2026-10-25