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

0-1ナップサックの価値

0から1000の整数容量で最大64組の重さと価値を使い、各品物を一度だけ選んで価値を最大化します。

● ● ●PackSerein●
ワークフロー · 0-1ナップサックの価値 ×
def knapsack_value(items, capacity):
    items = tuple(tuple(item) for item in items)
    if type(capacity) is not int or not 0 <= capacity <= 1000:
        raise ValueError("capacity.range")
    if len(items) > 64 or any(len(item) != 2 for item in items):
        raise ValueError("items.shape")
    if any(type(w) is not int or type(v) is not int or not 1 <= w <= 1000 or not 0 <= v <= 1000000 for w, v in items):
        raise ValueError("item.range")
    best = [0] * (capacity + 1)
    for weight, value in items:
        for limit in range(capacity, weight - 1, -1):
            best[limit] = max(best[limit], best[limit - weight] + value)
    return best[capacity]
✳0から1000の整数容量で最大64組の重さと価値を使い、各品物を一度だけ選んで価値を最大化します。
✓ 変更内容適用前に確認 ↗
ワークスペースのイメージ
  1. 適用前に確認

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

  2. モデル

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

  3. プロジェクト

    容量0と重すぎる品物を試し、表の作成前に重さ0や整数以外の値を拒否します。

ワークフロー

0-1ナップサックの価値

ワークフロー ↗
ワークフロー
def knapsack_value(items, capacity):
    items = tuple(tuple(item) for item in items)
    if type(capacity) is not int or not 0 <= capacity <= 1000:
        raise ValueError("capacity.range")
    if len(items) > 64 or any(len(item) != 2 for item in items):
        raise ValueError("items.shape")
    if any(type(w) is not int or type(v) is not int or not 1 <= w <= 1000 or not 0 <= v <= 1000000 for w, v in items):
        raise ValueError("item.range")
    best = [0] * (capacity + 1)
    for weight, value in items:
        for limit in range(capacity, weight - 1, -1):
            best[limit] = max(best[limit], best[limit - weight] + value)
    return best[capacity]
AIコーディングワークスペース

選択の規則と、それを実装するコードを区別する

PackSereinは、Windowsのプロジェクト環境で実装ファイルと共に最適化の要件を議論し、AI支援によるソフトウェア開発を進められます。選べる対象、必須の制約、呼び出し側が実際に必要な結果を説明してください。解法を変更する前に、現在の表現をアシスタントに確認させます。目的が明確なら、もっともらしい実装が微妙に違う問題を解くのを防げます。

knapsack.pyの例は、容量制限の下で各品物を最大1回選ぶレビュー作業を示します。更新案がその規則を保つか、アプリケーションに値だけが必要か、選んだ品物も必要かを尋ねられます。小さなケースを手計算してからコードを照らし合わせてください。入力範囲と拒否する値も同じレビューに含めます。

修正の準備ができたら、空の選択、容量の境界、競合する組み合わせについてプロジェクトテストを実行します。利用側を適応させる前に出力仕様を確認してください。PackSereinは対応するOpenAI互換またはAnthropicのエンドポイントと、必要な認証情報を受け付けます。接続先で利用可能ならフィルタリングのないAIモデルを選択できますが、制限、コンテキスト上限、ツール対応はモデルとサーバーに依存します。この環境は開発上の判断を整理し、目的を満たすかは利用者の確認で判断します。

最適化作業を定義する質問

同じ品物を2回選べるか明示するのはなぜですか?

繰り返し選択を許すと問題が変わり、結果も変わり得るためです。その制約を依頼に記載し、繰り返すと異なる答えになる小さなケースでテストして、更新が制約を維持するか確認します。

アプリケーションには最適値だけで十分ですか?

呼び出し側によります。点数だけが必要な利用側も、選択した品物も必要な利用側もあります。1つの数値で機能が完成するとアシスタントが思い込まないよう、変更依頼前に必要な出力を明示します。

値が同じ解をどう扱うべきですか?

有効な最適解ならどれでもよいのか、決定的な同点処理規則が必要か定義します。選んだ品物を返すなら同点を明示的にテストし、偶然の反復順序に頼らず規則をレビューしてください。

この例で大規模なソルバーの性能を確認できますか?

いいえ。範囲を限定した実装の議論に使い、実際のプロジェクトを必要な規模で評価してください。小さな正解ケースとAIの説明だけでは、異なる規模での実行時間やメモリの動作は分かりません。

Windows版をダウンロード ↗

PackSerein · 更新日 2026-10-25