Fluxuri de lucru · Împărțirea rândurilor cu neregularitate minimă ×
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
✳Împarte cel mult 100 de cuvinte fără spații în rânduri de unu până la 80 puncte de cod, minimizând pătratul spațiului liber exceptând ultimul rând.
✓ ModificăriVerifică înainte de aplicare ↗
Ilustrarea spațiului de lucru
Verifică înainte de aplicare
Compară comportamentul real cu rezultatul așteptat. Dacă o verificare eșuează, cercetează cauza înainte de alte modificări.
Modele
Configurează un endpoint compatibil OpenAI sau Anthropic cu URL-ul de bază și cheia API, dacă este necesară. Testează conexiunea. Serverul local trebuie să ruleze; instrumentele externe pot transmite date separat.
Proiect
Testează intrarea goală și despărțiri alternative, respinge cuvinte goale sau prea lungi fără a pretinde lățime vizuală de terminal.
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
Spațiu de programare cu AI
Definește un obiectiv verificabil pentru modificarea aranjării textului
LineCitrine oferă un spațiu de lucru Windows pentru programatorii care analizează decizii de formatare a ieșirii cu un model IA conectat. O cerere de aranjare a textului este mai ușor de examinat când precizează ce înseamnă un rezultat mai bun. Deschide folderul proiectului și adu în conversație formatorul, codul care îl folosește și o intrare reprezentativă înainte să soliciți o modificare.
Un exemplu solicită împărțirea textului simplu pe linii astfel încât să minimizeze pătratele spațiilor neutilizate, tratând separat ultima linie. Definește explicit cuvintele permise, limita de lățime și regula de cost. Cere modelului să compare variantele de despărțire cu acel obiectiv. Distinge lungimea în puncte de cod de lățimea în coloane afișate, astfel încât propunerea să nu promită implicit un comportament dincolo de reprezentarea aleasă.
Examinează modificarea sugerată folosind aranjări concurente, o intrare goală și un cuvânt care depășește lățimea acceptată. Rulează verificările proiectului și calculează costurile așteptate pentru exemplele mici alese. Rezultatul trebuie să păstreze cuvintele și să îndeplinească obiectivul declarat, nu doar să pară echilibrat într-un anumit font. Include formatul în care este folosit rezultatul dacă impune cerințe suplimentare.
Un endpoint acceptat, compatibil cu OpenAI sau Anthropic, asigură conexiunea la model pentru LineCitrine. Acolo unde sunt oferite modele de IA fără restricții, poți selecta unul folosind credențialele necesare. Modelul și serverul determină restricțiile, limitele contextului și suportul pentru instrumente; obiectivul aranjării rămâne o cerință pe care o definești și o verifici.
Întrebări despre o propunere de despărțire pe linii
Ce trebuie să spună cererea despre ultima linie?
Precizează dacă spațiul său neutilizat contribuie la cost. Obiectivul ilustrat îl exclude, ceea ce poate schimba despărțirile preferate. Include un exemplu mic în care alegerea contează și compară rezultatul propus cu regula de cost pe care o dorești efectiv.
Poate lățimea în puncte de cod să înlocuiască lățimea în terminal?
În general, nu. Semnele combinante și caracterele late pot fi afișate diferit de numărul punctelor de cod. Păstrează explicită măsura din contract. Dacă sunt importante coloanele terminalului, definește această cerință separat și examinează tratarea necesară în mediul real de randare.
Cum examinez o optimizare fără să mă bazez pe explicația ei?
Folosește intrări mici cu câteva variante concurente de despărțire și calculează independent costurile așteptate. Verifică dacă propunerea alege un minim permis de regula declarată. Apoi rulează cazuri de test mai ample ale proiectului pentru a căuta schimbări de comportament dincolo de exemplele respective.
Ce trebuie să se întâmple cu un cuvânt prea lung?
Precizează dacă formatorul îl respinge, îl împarte sau permite depășirea. Exemplul respinge cuvintele care depășesc lățimea acceptată. Examinează acest traseu și apelantul său, astfel încât o modificare a aranjării să nu introducă implicit altă transformare a conținutului sau politică de erori.