依頼では最終行について何を伝えるべきですか?
最終行の未使用スペースをコストに含めるか示します。例の目的では除外しており、それによって望ましい改行が変わる場合があります。この選択が影響する小さな例を含め、実際に意図するコスト規則と出力案を比較してください。
空白を含まない最大100語を1から80コードポイントの行へ分け、最終行以外の余白の二乗和を最小にします。
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| 適用前に確認 | 実際の動作を期待する結果と比較します。検証に失敗した場合は、次の変更を加える前に原因を調べてください。 |
|---|---|
| モデル | 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 linesLineCitrineは、接続したAIモデルと出力整形の判断を検討する開発者向けのWindowsコーディングワークスペースです。何をもって結果が良いとするかを示すと、配置の依頼をレビューしやすくなります。プロジェクトフォルダーを開き、変更依頼の前に整形処理、利用側、代表的な入力を対話に含めてください。
一例は、最終行を別扱いにしながら未使用スペースの二乗を最小化するプレーンテキストの改行です。許容する単語、幅の上限、コスト規則を明示し、候補の改行をその目的と比較するようモデルに依頼します。コードポイント数と表示列幅を区別し、選んだ表現の範囲を超えた動作を提案が黙って約束しないようにします。
競合する配置、空の入力、許容幅を超える単語で編集案をレビューします。プロジェクトのチェックを実行し、選んだ小さな例の期待コストを計算してください。結果は、あるフォントで均等に見えるだけでなく、単語を保持し、指定した目的を満たす必要があります。利用側の形式に追加要件があれば、それも含めてください。
LineCitrineのモデル接続には、対応するOpenAI互換またはAnthropicのエンドポイントを使います。制限のないAIモデルが提供されていれば、必要な認証情報で選択できます。制限、コンテキストの上限、ツール対応はモデルとサーバーによって決まります。配置の目的は、利用者が定義して検証する要件です。
最終行の未使用スペースをコストに含めるか示します。例の目的では除外しており、それによって望ましい改行が変わる場合があります。この選択が影響する小さな例を含め、実際に意図するコスト規則と出力案を比較してください。
一般にはできません。結合文字や幅広文字の表示はコードポイント数と異なる場合があります。契約内で測定方法を明示してください。端末の列数が重要なら別の要件として定義し、実際の描画環境で必要な処理をレビューします。
改行候補が少数ある小さな入力を使い、期待コストを独立に計算します。提案が指定規則の下で許容される最小値を選ぶか確認してください。その後、より広範なプロジェクトのテストデータで、例以外の動作の変化を調べます。
整形処理が拒否するのか、分割するのか、はみ出しを許すのか指定します。例では許容幅を超える単語を拒否します。この経路と呼び出し側をレビューし、配置の編集で内容変換やエラー方針が黙って変わらないようにしてください。
LineCitrine · 更新日 2026-10-25