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

行末の不揃いを最小にする折り返し

空白を含まない最大100語を1から80コードポイントの行へ分け、最終行以外の余白の二乗和を最小にします。

● ● ●LineCitrine●
ワークフロー · 行末の不揃いを最小にする折り返し ×
def wrap_words(words, width):
    words = tuple(words)
    if type(width) is not int or not 1 <= width <= 80 or len(words) > 100:
        raise ValueError("wrap.limit")
    if any(type(w) is not str or not w or len(w) > width or any(c.isspace() for c in w) for w in words):
        raise ValueError("wrap.word")
    n = len(words)
    costs, ends = [0] * (n+1), [0] * n
    for i in range(n-1, -1, -1):
        used, best = 0, None
        for j in range(i, n):
            used += len(words[j]) + (j > i)
            if used > width:
                break
            cost = 0 if j == n-1 else (width-used)**2 + costs[j+1]
            if best is None or cost < best:
                best, ends[i] = cost, j+1
        costs[i] = best
    lines, i = [], 0
    while i < n:
        lines.append(" ".join(words[i:ends[i]]))
        i = ends[i]
    return lines
✳空白を含まない最大100語を1から80コードポイントの行へ分け、最終行以外の余白の二乗和を最小にします。
✓ 変更内容適用前に確認 ↗
ワークスペースのイメージ
適用前に確認実際の動作を期待する結果と比較します。検証に失敗した場合は、次の変更を加える前に原因を調べてください。
モデルOpenAI互換またはAnthropicのエンドポイントを、ベースURLと必要なAPIキーで設定し、接続をテストします。ローカルのモデルサーバーは起動が必要です。リモートツールは別途データを送信する場合があります。
プロジェクト空の入力と異なる改行位置を試し、空語や長すぎる語を拒否して端末表示幅とは区別します。
ワークフロー

行末の不揃いを最小にする折り返し

ワークフロー ↗
ワークフロー
def wrap_words(words, width):
    words = tuple(words)
    if type(width) is not int or not 1 <= width <= 80 or len(words) > 100:
        raise ValueError("wrap.limit")
    if any(type(w) is not str or not w or len(w) > width or any(c.isspace() for c in w) for w in words):
        raise ValueError("wrap.word")
    n = len(words)
    costs, ends = [0] * (n+1), [0] * n
    for i in range(n-1, -1, -1):
        used, best = 0, None
        for j in range(i, n):
            used += len(words[j]) + (j > i)
            if used > width:
                break
            cost = 0 if j == n-1 else (width-used)**2 + costs[j+1]
            if best is None or cost < best:
                best, ends[i] = cost, j+1
        costs[i] = best
    lines, i = [], 0
    while i < n:
        lines.append(" ".join(words[i:ends[i]]))
        i = ends[i]
    return lines
AIコーディングワークスペース

文字配置の変更にレビュー可能な目的を与える

LineCitrineは、接続したAIモデルと出力整形の判断を検討する開発者向けのWindowsコーディングワークスペースです。何をもって結果が良いとするかを示すと、配置の依頼をレビューしやすくなります。プロジェクトフォルダーを開き、変更依頼の前に整形処理、利用側、代表的な入力を対話に含めてください。

一例は、最終行を別扱いにしながら未使用スペースの二乗を最小化するプレーンテキストの改行です。許容する単語、幅の上限、コスト規則を明示し、候補の改行をその目的と比較するようモデルに依頼します。コードポイント数と表示列幅を区別し、選んだ表現の範囲を超えた動作を提案が黙って約束しないようにします。

競合する配置、空の入力、許容幅を超える単語で編集案をレビューします。プロジェクトのチェックを実行し、選んだ小さな例の期待コストを計算してください。結果は、あるフォントで均等に見えるだけでなく、単語を保持し、指定した目的を満たす必要があります。利用側の形式に追加要件があれば、それも含めてください。

LineCitrineのモデル接続には、対応するOpenAI互換またはAnthropicのエンドポイントを使います。制限のないAIモデルが提供されていれば、必要な認証情報で選択できます。制限、コンテキストの上限、ツール対応はモデルとサーバーによって決まります。配置の目的は、利用者が定義して検証する要件です。

改行の提案に関する質問

依頼では最終行について何を伝えるべきですか?

最終行の未使用スペースをコストに含めるか示します。例の目的では除外しており、それによって望ましい改行が変わる場合があります。この選択が影響する小さな例を含め、実際に意図するコスト規則と出力案を比較してください。

コードポイントの幅を端末の表示幅の代わりにできますか?

一般にはできません。結合文字や幅広文字の表示はコードポイント数と異なる場合があります。契約内で測定方法を明示してください。端末の列数が重要なら別の要件として定義し、実際の描画環境で必要な処理をレビューします。

説明を信用せずに最適化をレビューするには?

改行候補が少数ある小さな入力を使い、期待コストを独立に計算します。提案が指定規則の下で許容される最小値を選ぶか確認してください。その後、より広範なプロジェクトのテストデータで、例以外の動作の変化を調べます。

幅を超える単語はどう扱うべきですか?

整形処理が拒否するのか、分割するのか、はみ出しを許すのか指定します。例では許容幅を超える単語を拒否します。この経路と呼び出し側をレビューし、配置の編集で内容変換やエラー方針が黙って変わらないようにしてください。

Windows版をダウンロード ↗

LineCitrine · 更新日 2026-10-25