Given a width and a block of
text containing possible hyphen-
ation points, format it fully-
justified (in monospace).
Totalmente justificado significa que está alineado a la izquierda y a la derecha, y se logra aumentando el espacio entre las palabras hasta que encaje cada línea.
Relacionado:
- Justifica un texto agregando espacios
- Alinear el texto a un bloque
- Y de alguna manera, esto puede considerarse el siguiente paso en el procesamiento de texto # 1: guión (que parece que nunca se ha publicado).
Entrada
Puede tomar la entrada en cualquier formato que desee. Se le dará:
- Un ancho objetivo (en caracteres), en el rango de 5-100 (inclusive);
- Un bloque de texto que contiene palabras posiblemente con guiones. Esto podría ser una cadena separada por espacios, un conjunto de palabras o un conjunto de conjuntos de fragmentos de palabras (o cualquier otra representación de datos que desee).
Una entrada típica podría ser:
Width: 25
Text: There's no bu-si-ne-ss lik-e s-h-o-w busine-ss, n-o bus-iness I know.
Donde los guiones denotan posibles puntos de separación de sílabas, y los espacios denotan límites de palabras. Una posible representación alternativa del texto:
[["There's"], ["no"], ["bu", "si", "ne", "ss"], ["lik", "e"], (etc.)]
Salida
El texto de entrada con espacios agregados entre palabras, líneas nuevas en el ancho de la columna y puntos de separación silábica elegidos para justificarlo completamente al ancho de la columna. Para las funciones, se puede devolver una matriz de cadenas (una para cada línea) en lugar de usar la separación de nueva línea.
Una posible salida para la entrada anterior podría ser:
There's no business like
show business, no bus-
iness I know.
Tenga en cuenta que todos los guiones se han eliminado, excepto el que está en el "bus-iness" final, que se mantiene para mostrar que la palabra se ajusta a la siguiente línea y se eligió para garantizar que la segunda línea contenga la mayor cantidad de texto posible.
Reglas
Dentro de cada línea, el número de espacios entre las palabras no puede variar en más de 1, pero el lugar donde inserte los espacios adicionales depende de usted:
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)
Ninguna línea puede comenzar o terminar con espacios (excepto la última línea, que puede terminar con espacios).
La última línea debe dejarse justificada, conteniendo espacios individuales entre cada palabra. Puede ir seguido de espacios en blanco arbitrarios / una nueva línea si lo desea, pero esto no es obligatorio.
Las palabras consistirán en AZ, az, 0-9 y puntuación simple (
.,'()&
)Puede suponer que ningún fragmento de palabra será más largo que el ancho objetivo, y siempre será posible llenar líneas de acuerdo con las reglas (es decir, habrá al menos 2 fragmentos de palabra en cada línea, o un fragmento de 1 palabra que llene la línea perfectamente)
Debe elegir puntos de separación silábica que maximicen el número de caracteres de palabras en líneas anteriores (es decir, las palabras deben consumirse con avidez por líneas), por ejemplo:
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.
El código más corto en bytes gana
Ejemplos
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
con un ancho de 7, ¿podemos elegir la salida de anybody
o anybod-\ny
?