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

ヒストグラム内の最大長方形

幅1の棒が最大256本あり、高さが0から1000000の整数であるヒストグラムの最大長方形を求めます。

● ● ●BarCumulus●
ワークフロー · ヒストグラム内の最大長方形 ×
def histogram_area(heights):
    heights = tuple(heights)
    if len(heights) > 256 or any(type(h) is not int or not 0 <= h <= 1000000 for h in heights):
        raise ValueError("height.range")
    stack, best = [], 0
    for i in range(len(heights) + 1):
        current = heights[i] if i < len(heights) else 0
        while stack and heights[stack[-1]] > current:
            height = heights[stack.pop()]
            start = stack[-1] + 1 if stack else 0
            best = max(best, height * (i - start))
        stack.append(i)
    return best
✳幅1の棒が最大256本あり、高さが0から1000000の整数であるヒストグラムの最大長方形を求めます。
✓ 変更内容適用前に確認 ↗
ワークスペースのイメージ
01

プロジェクト

空の入力と同じ高さを確認し、入力を変更せず負数や真偽値を拒否します。

02

適用前に確認

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

03

モデル

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

ワークフロー

ヒストグラム内の最大長方形

ワークフロー ↗
ワークフロー
def histogram_area(heights):
    heights = tuple(heights)
    if len(heights) > 256 or any(type(h) is not int or not 0 <= h <= 1000000 for h in heights):
        raise ValueError("height.range")
    stack, best = [], 0
    for i in range(len(heights) + 1):
        current = heights[i] if i < len(heights) else 0
        while stack and heights[stack[-1]] > current:
            height = heights[stack.pop()]
            start = stack[-1] + 1 if stack else 0
            best = max(best, height * (i - start))
        stack.append(i)
    return best
AIコーディングワークスペース

形を変える前に、リファクタリングで何を保つかを問う

BarCumulusは、維持すべき動作を見失わずに実装変更をレビューするWindows向けAIコーディング環境です。プロジェクトフォルダーを開き、状態の明確化、小さな補助関数、テストのしやすさなど、リファクタリングの理由を説明してください。置き換えを提案する前に、既存の仕様をモデルに確認させます。

対応するOpenAI互換またはAnthropicのエンドポイントで提供されていれば、無検閲AIモデルに接続できます。必要な場合は認証情報を追加します。プロバイダーの制限、ツールの能力、コンテキスト上限は引き続き適用されます。見た目が違う実装をそれだけで改善と捉えず、レビュー可能な根拠を組み立てるために会話を使ってください。

持ち込める例の1つは、棒の高さから最大長方形を計算する処理です。同じ高さが続く部分、空入力、最後に残った未処理の扱いをレビューするよう依頼します。手で結果を確認した小さなテストデータを含め、提案のどの部分がそのケースを維持し、どの部分が変えるかモデルに尋ねてください。

生成された差分を確認し、採用する予定の版と同じ版でプロジェクトのチェックを実行します。複雑な変更なら、小さな入力について独立した単純な実装と比較してください。その比較はテスト範囲内の根拠であり、この環境を自動証明システムにするものではありません。

リファクタリングの根拠を確かめる

アルゴリズムのリファクタリングを依頼する有用な理由は?

不明確な状態遷移や重複処理など、評価できる保守上の問題を挙げます。それを解決する最小限の提案を求めてください。置き換えは目新しさだけでなく、読みやすさと検証済みの動作によって価値を示すべきです。

例のテストデータに同じ高さの棒を含めるのはなぜですか?

同じ値が続くと、保留中の状態をいつ残し、いつ取り除くかという前提が明らかになることがあります。期待結果の分かる短い平坦部分を含めてください。大きな例を見る前に、提案実装に照らしてそのテストデータを説明するようモデルに求めます。

差分テストは2つの実装の同等性を証明しますか?

テストした入力における同等性を支持し、不一致を発見できます。入力範囲と参照実装を明示し、違いを調べてください。有限のテストを、本番の関数が受け入れる全入力に対する証明と説明してはいけません。

比較スクリプトの提案をどうレビューすべきですか?

実行前に入力範囲と実行計画を読んでください。ツールの接続先も確認します。ローカルでのモデル推論には別途サーバーが必要で、接続されたすべての実行ツールがローカルになるわけではありません。テストの負荷は意図的に小さく保ちます。

Windows版をダウンロード ↗

BarCumulus · 更新日 2026-10-25