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
✳Boşluksuz en fazla 100 sözcüğü bir ile 80 kod noktalı satırlara ayırıp son satır dışındaki boşluğun karelerini en aza indirin.
✓ DeğişikliklerUygulamadan önce inceleyin ↗
Çalışma alanı çizimi
Uygulamadan önce inceleyin
Gerçek davranışı beklenen sonuçla karşılaştırın. Bir kontrol başarısız olursa yeni değişikliklerden önce nedenini araştırın.
Modeller
Temel URL ve gerekiyorsa API anahtarıyla OpenAI uyumlu veya Anthropic endpoint yapılandırın. Bağlantıyı test edin. Yerel model sunucusu çalışıyor olmalıdır; uzak araçlar ayrıca veri aktarabilir.
Proje
Boş girdiyi ve farklı kırımları sınayın; boş veya uzun sözcükleri reddedin ve terminal görüntü genişliği iddia etmeyin.
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
Yapay zekâ ile kod çalışma alanı
Metin yerleşimi değişikliğine inceleyebileceğiniz bir hedef verin
LineCitrine, bağlı bir yapay zeka modeliyle çıktı biçimlendirme kararlarını değerlendiren geliştiricilere bir Windows kodlama çalışma alanı sunar. Daha iyi sonucun ne olduğu belirtildiğinde bir yerleşim isteğini incelemek kolaylaşır. Değişiklik istemeden önce proje klasörünü açın; biçimlendiriciyi, onu kullanan kodu ve temsili bir girdiyi görüşmeye getirin.
Bir örnek, son satırı ayrı ele alırken kullanılmayan alanın karelerini en aza indiren düz metin satır sonları ister. İzin verilen sözcükleri, genişlik sınırını ve maliyet kuralını açıkça tanımlayın. Modelden olası satır bölmelerini bu hedefe göre karşılaştırmasını isteyin. Önerinin seçilen gösterimin ötesinde sessizce davranış vaat etmemesi için kod noktası uzunluğunu görüntülenen sütun genişliğinden ayrı tutun.
Önerilen düzenlemeyi alternatif yerleşimlerle, boş girdiyle ve kabul edilen genişliği aşan bir sözcükle inceleyin. Proje denetimlerini çalıştırın ve seçtiğiniz küçük örneklerin beklenen maliyetlerini hesaplayın. Sonuç yalnızca tek yazı tipinde dengeli görünmekle kalmamalı; sözcükleri korumalı ve belirtilen hedefi karşılamalıdır. Ek gereksinimler getiriyorsa çıktıyı kullanan biçimi de dahil edin.
Desteklenen bir OpenAI uyumlu veya Anthropic uç noktası, LineCitrine'ın model bağlantısını sağlar. Kısıtlamasız yapay zeka modelleri sunuluyorsa gerekli kimlik bilgileriyle birini seçebilirsiniz. Kısıtlamaları, bağlam sınırlarını ve araç desteğini model ile sunucu belirler; yerleşim hedefi ise sizin tanımlayıp doğruladığınız bir gereksinim olarak kalır.
Bir satır bölme önerisi hakkında sorular
İstek son satır hakkında ne söylemeli?
Kullanılmayan alanının maliyete katılıp katılmadığını belirtin. Örnek hedef bunu hariç tutar; bu da tercih edilen bölmeleri değiştirebilir. Bu seçimin önemli olduğu küçük bir örnek ekleyin ve önerilen çıktıyı gerçekten amaçladığınız maliyet kuralıyla karşılaştırın.
Kod noktası genişliği terminal genişliğinin yerine geçebilir mi?
Genel olarak hayır. Birleştirici işaretler ve geniş karakterler kod noktası sayılarından farklı görüntülenebilir. Sözleşmenizde ölçümü açık tutun. Terminal sütunları önemliyse bu ayrı gereksinimi tanımlayın ve gereken işlemleri gerçek görüntüleme ortamınızda inceleyin.
Bir optimizasyonu açıklamasına güvenmeden nasıl inceleyebilirim?
Birkaç alternatif bölme seçeneği olan küçük girdiler kullanın ve beklenen maliyetlerini bağımsız hesaplayın. Önerinin belirtilen kurala göre izin verilen bir minimumu seçtiğini denetleyin. Ardından bu örneklerin ötesindeki davranış değişikliklerini aramak için daha kapsamlı proje test verileri çalıştırın.
Çok uzun bir sözcüğe ne olmalı?
Biçimlendiricinin bunu reddedeceğini, böleceğini veya taşmaya izin vereceğini belirtin. Örnek, kabul edilen genişliği aşan sözcükleri reddeder. Yerleşim düzenlemesinin sessizce farklı bir içerik dönüşümü veya hata ilkesi getirmemesi için bu yolu ve çağıran kodu inceleyin.