Répartissez au plus 100 mots sans espaces sur des lignes de un à 80 points de code, en minimisant le carré de l’espace inutilisé sauf en dernière ligne.
Méthodes de travail · Coupure de lignes à irrégularité minimale ×
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
✳Répartissez au plus 100 mots sans espaces sur des lignes de un à 80 points de code, en minimisant le carré de l’espace inutilisé sauf en dernière ligne.
✓ ModificationsVérifiez avant d’appliquer ↗
Illustration de l’espace de travail
Vérifiez avant d’appliquer
Comparez le comportement observé au résultat attendu. Si une vérification échoue, cherchez la cause avant de poursuivre les modifications.
Modèles
Configurez un endpoint compatible OpenAI ou Anthropic avec son URL de base et une clé API si nécessaire. Testez la connexion. Un serveur local doit fonctionner ; les outils distants peuvent transmettre des données séparément.
Projet
Testez une entrée vide et plusieurs coupures, rejetez les mots vides ou trop longs sans prétendre mesurer la largeur du 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
Espace de développement avec IA
Donnez à une modification de mise en lignes un objectif vérifiable
LineCitrine propose un espace de programmation pour Windows aux développeurs qui examinent des choix de formatage avec un modèle d’IA connecté. Une demande de mise en forme est plus facile à examiner lorsqu’elle définit ce qui constitue un meilleur résultat. Ouvrez le dossier du projet et ajoutez le formateur, son consommateur et une entrée représentative à la conversation avant de demander une modification.
Un exemple consiste à couper un texte brut en lignes en minimisant le carré de l’espace inutilisé, avec un traitement distinct de la dernière ligne. Définissez explicitement les mots autorisés, la largeur limite et la règle de coût. Demandez au modèle de comparer les coupures possibles à cet objectif. Distinguez le nombre de points de code de la largeur affichée en colonnes afin que la proposition ne promette pas implicitement un comportement dépassant la représentation choisie.
Examinez la modification suggérée avec des mises en lignes concurrentes, une entrée vide et un mot dépassant la largeur acceptée. Exécutez les vérifications du projet et calculez les coûts attendus des petits exemples choisis. Le résultat doit préserver les mots et respecter l’objectif défini, et pas simplement paraître équilibré dans une police donnée. Incluez le format consommateur s’il impose des exigences supplémentaires.
Un point de terminaison compatible OpenAI ou Anthropic pris en charge fournit la connexion au modèle de LineCitrine. Lorsque des modèles d’IA sans restrictions sont proposés, vous pouvez en sélectionner un avec les identifiants requis. Le modèle et le serveur déterminent les restrictions, les limites de contexte et les outils pris en charge ; l’objectif de mise en lignes reste une exigence que vous définissez et vérifiez.
Questions sur une proposition de coupure des lignes
Que préciser dans la demande concernant la dernière ligne ?
Indiquez si son espace inutilisé contribue au coût. L’objectif illustré l’exclut, ce qui peut modifier les coupures préférées. Incluez un petit exemple où ce choix compte et comparez la sortie proposée à la règle de coût réellement souhaitée.
Le nombre de points de code peut-il remplacer la largeur du terminal ?
Pas en général. Les signes combinatoires et les caractères larges peuvent s’afficher différemment de leur nombre de points de code. Explicitez la mesure dans votre contrat. Si les colonnes du terminal importent, définissez cette exigence distincte et examinez le traitement nécessaire dans votre environnement de rendu réel.
Comment examiner une optimisation sans faire confiance à son explication ?
Utilisez de petites entrées offrant quelques choix de coupures concurrents et calculez leurs coûts attendus indépendamment. Vérifiez que la proposition sélectionne un minimum autorisé selon la règle indiquée. Exécutez ensuite des jeux d’essai plus larges du projet pour repérer des changements au-delà de ces exemples.
Que doit devenir un mot trop large ?
Précisez si le formateur le rejette, le divise ou autorise un dépassement. L’exemple rejette les mots dépassant la largeur acceptée. Examinez ce chemin et son appelant pour qu’une modification de mise en lignes n’introduise pas silencieusement une autre transformation du contenu ou politique d’erreur.