def chain_cost(dimensions):
if type(dimensions) not in (list, tuple) or not 2 <= len(dimensions) <= 13:
raise ValueError("one through twelve matrices")
if any(type(d) is not int or not 1 <= d <= 1000 for d in dimensions):
raise ValueError("dimensions 1 through 1000")
n = len(dimensions)-1
cost = [[0]*n for _ in range(n)]
for width in range(2, n+1):
for left in range(n-width+1):
right = left+width-1
cost[left][right] = min(
cost[left][k]+cost[k+1][right]+
dimensions[left]*dimensions[k+1]*dimensions[right+1]
for k in range(left,right))
return cost[0][n-1]| プロジェクト | 行列一個と異なる括弧付けを試し、行列要素を掛けずに1〜1000以外の次元を拒否します。 |
|---|---|
| 適用前に確認 | 実際の動作を期待する結果と比較します。検証に失敗した場合は、次の変更を加える前に原因を調べてください。 |
| モデル | OpenAI互換またはAnthropicのエンドポイントを、ベースURLと必要なAPIキーで設定し、接続をテストします。ローカルのモデルサーバーは起動が必要です。リモートツールは別途データを送信する場合があります。 |
def chain_cost(dimensions):
if type(dimensions) not in (list, tuple) or not 2 <= len(dimensions) <= 13:
raise ValueError("one through twelve matrices")
if any(type(d) is not int or not 1 <= d <= 1000 for d in dimensions):
raise ValueError("dimensions 1 through 1000")
n = len(dimensions)-1
cost = [[0]*n for _ in range(n)]
for width in range(2, n+1):
for left in range(n-width+1):
right = left+width-1
cost[left][right] = min(
cost[left][k]+cost[k+1][right]+
dimensions[left]*dimensions[k+1]*dimensions[right+1]
for k in range(left,right))
return cost[0][n-1]算出した計画と、それが表す処理を区別する
ChainArborは、接続したモデルと前提を話し合いながら計算計画に取り組むWindows向けコーディング環境です。まず計画関数が実際に何を返し、誰がそれを使うかを特定してください。コストの見積もり、実行順序、実行済みの演算は異なる出力です。有用な変更依頼では、その違いを明示します。
付属の作業例は行列連鎖のコスト計画です。周囲のアプリケーションを拡張する前に、次元の検証と報告される演算コストのレビューをアシスタントに依頼できます。呼び出し側とその期待も含め、修正案が最小コストを乗算の実行順序や計算済みの行列結果であるかのように扱わないようにします。
会話でインターフェースの決定事項を明らかにし、生成されたソースの変更を確認してください。行列が1つの場合も含め、コストを別途確認した小さな次元列でチェックし、プロジェクト自身のテストを実行します。後で実行計画を依頼する場合は、コスト計算から当然に得られると考えず、その表現と検証を追加要件として扱ってください。
フィルタリングのないAIモデルを選ぶには、希望するモデルを提供する、対応済みのOpenAI互換またはAnthropicのサービスに接続します。認証情報、ツール対応、コンテキスト上限はその構成に依存します。この環境はプロバイダーの制限を無効にしません。計画の変更案を、確認できるソースと受け入れ基準に結び付けるために役立ちます。
計画コードの範囲を明確にする質問
実行順序が必要な場合は何を依頼すべきですか?
順序を明示的に表す形式を依頼し、呼び出し側での使い方を説明してください。最小演算コストを報告する関数は、その形式を出力しない場合があります。計画と報告コストの両方を検証する例を含めます。
行列が1つだけの連鎖をテストするのはなぜですか?
乗算が不要な場合の基本動作を定めるためです。小さな複数行列の例と一緒に含め、境界条件と、より長い連鎖で使う計画ロジックの両方に照らしてアシスタントの提案を確認します。
この環境は実際の行列の数値計算結果を検証できますか?
その結果にはプロジェクトの数値計算ツールとテストを使ってください。このコーディング環境は変更案の議論とレビューを支援します。正しいコストのテストデータだけでは、別の乗算実装が正しい値を出すことは証明できません。
コスト計算のリファクタリングでインターフェースが広がるのを防ぐには?
現在の戻り値の型と、呼び出し側に必要な動作を依頼に記載してください。差分に新しい出力や単位の変更がないか確認します。より詳しい計画が必要なら、付随的なリファクタリングではなく、意図的な後続作業として定義します。
ChainArbor · 更新日 2026-10-25