Given a width and a block of
text containing possible hyphen-
ation points, format it fully-
justified (in monospace).
Entièrement justifié signifie qu'il est aligné à gauche et à droite, et est obtenu en augmentant l'espacement entre les mots jusqu'à ce que chaque ligne s'adapte.
En relation:
- Justifier un texte en ajoutant des espaces
- Aligner le texte sur un bloc
- Et d'une certaine manière, cela peut être considéré comme la prochaine étape du traitement de texte n ° 1: la césure (qui semble n'avoir jamais été publiée).
Contribution
Vous pouvez saisir des informations dans le format de votre choix. Vous recevrez:
- Une largeur cible (en caractères), comprise entre 5 et 100 (inclus);
- Un bloc de texte contenant éventuellement des mots coupés. Cela peut être une chaîne séparée par des espaces, un tableau de mots ou un tableau de tableaux de fragments de mots (ou toute autre représentation de données que vous désirez).
Une entrée typique peut être:
Width: 25
Text: There's no bu-si-ne-ss lik-e s-h-o-w busine-ss, n-o bus-iness I know.
Où les tirets indiquent les points de césure possibles et les espaces les limites des mots. Une représentation alternative possible du texte:
[["There's"], ["no"], ["bu", "si", "ne", "ss"], ["lik", "e"], (etc.)]
Sortie
Le texte d'entrée avec des espaces ajoutés entre les mots, les sauts de ligne à la largeur de la colonne et les points de césure choisis pour le justifier pleinement à la largeur de la colonne. Pour les fonctions, un tableau de chaînes (une pour chaque ligne) peut être renvoyé au lieu d'utiliser la séparation de nouvelle ligne.
Une sortie possible pour l'entrée ci-dessus peut être:
There's no business like
show business, no bus-
iness I know.
Notez que tous les tirets ont été supprimés à l'exception de celui dans le dernier "bus-iness", qui est conservé pour montrer que le mot passe à la ligne suivante, et a été choisi pour s'assurer que la deuxième ligne contient autant de texte que possible.
Règles
À l'intérieur de chaque ligne, le nombre d'espaces entre les mots ne peut pas varier de plus de 1, mais l'endroit où vous insérez les espaces supplémentaires dépend de vous:
hello hi foo bar <-- not permitted (1,1,5) hello hi foo bar <-- not permitted (2,1,4) hello hi foo bar <-- OK (2,2,3) hello hi foo bar <-- OK (2,3,2) hello hi foo bar <-- OK (3,2,2)
Aucune ligne ne peut commencer ou se terminer par des espaces (sauf la dernière ligne, qui peut se terminer par des espaces).
La dernière ligne doit être justifiée à gauche, contenant des espaces simples entre chaque mot. Il peut être suivi d'espaces arbitraires / d'une nouvelle ligne si vous le souhaitez, mais ce n'est pas obligatoire.
Les mots seront constitués de AZ, az, 0-9 et d'une simple ponctuation (
.,'()&
)Vous pouvez supposer qu'aucun fragment de mot ne sera plus long que la largeur cible, et il sera toujours possible de remplir les lignes selon les règles (c'est-à-dire qu'il y aura au moins 2 fragments de mot sur chaque ligne, ou 1 fragment de mot qui remplit la ligne à la perfection)
Vous devez choisir des points de césure qui maximisent le nombre de caractères des mots sur les lignes précédentes (c'est-à-dire que les mots doivent être consommés avec gourmandise par les lignes), par exemple:
This is an input stri-ng with hyph-en-at-ion poi-nts. This is an input stri- <-- not permitted ng with hyphenation points. This is an input string with hyph- <-- not permitted enation points. This is an input string with hyphen- <-- OK ation points.
Le code le plus court en octets gagne
Exemples
Width: 20
Text: The q-uick brown fox ju-mp-s ove-r t-h-e lazy dog.
The quick brown fox
jumps over the lazy
dog.
Width: 32
Text: Given a width and a block of text cont-ain-ing pos-sible hyphen-ation points, for-mat it ful-ly-just-ified (in mono-space).
Given a width and a block of
text containing possible hyphen-
ation points, format it fully-
justified (in monospace).
Width: 80
Text: Pro-gram-ming Puz-zles & Code Golf is a ques-tion and ans-wer site for pro-gram-ming puz-zle enth-usi-asts and code golf-ers. It's built and run by you as part of the St-ack Exch-ange net-work of Q&A sites. With your help, we're work-ing to-g-et-her to build a lib-rary of pro-gram-ming puz-zles and their sol-ut-ions.
Programming Puzzles & Code Golf is a question and answer site for programming
puzzle enthusiasts and code golfers. It's built and run by you as part of the
Stack Exchange network of Q&A sites. With your help, we're working together to
build a library of programming puzzles and their solutions.
Width: 20
Text: Pro-gram-ming Puz-zles & Code Golf is a ques-tion and ans-wer site for pro-gram-ming puz-zle enth-usi-asts and code golf-ers. It's built and run by you as part of the St-ack Exch-ange net-work of Q&A sites. With your help, we're work-ing to-g-et-her to build a lib-rary of pro-gram-ming puz-zles and their sol-ut-ions.
Programming Puzzles
& Code Golf is a
question and answer
site for programming
puzzle enthusiasts
and code golfers.
It's built and run
by you as part of
the Stack Exchange
network of Q&A
sites. With your
help, we're working
together to build a
library of program-
ming puzzles and
their solutions.
Width: 5
Text: a b c d e f g h i j k l mm nn oo p-p qq rr ss t u vv ww x yy z
a b c
d e f
g h i
j k l
mm nn
oo pp
qq rr
ss t
u vv
ww x
yy z
Width: 10
Text: It's the bl-ack be-ast of Araghhhhh-hhh-h-hhh-h-h-h-hh!
It's the
black be-
ast of
Araghhhhh-
hhhhhhhhh-
hhh!
anybod-y
avec une largeur 7, pouvons-nous choisir de sortir soit anybody
ou anybod-\ny
?