Escriba un programa o función que, dado un texto, varias columnas y el ancho de la columna, formatee el texto en columnas. Esta es la tipografía de texto sin formato .
Reglas
Entrada
- El texto será una cadena de ASCII imprimible y puede contener nuevas líneas y espacios (pero no pestañas).
- El número de columnas será un entero positivo.
- El ancho de la columna es un número entero mayor o igual a 2 que especifica cuántos caracteres por columna.
Para este desafío, una palabra consistirá en cualquier carácter que no sea un espacio en blanco. La entrada consta de una cadena y dos enteros, que pueden tomarse en cualquier orden.
Salida
La salida es el texto formateado en columnas equilibradas con tantas palabras en cada línea como quepan.
- Si una palabra es demasiado larga para caber en una columna, colóquela en la línea siguiente si hay otra palabra en la línea actual y la línea podría rellenarse al ancho de la columna con tres espacios o menos.
- De lo contrario, separe la palabra con guiones para que ocupe el resto de la línea. Separar dondequiera que termine la línea; no te preocupes por separar las sílabas entre sílabas.
- Las columnas deben estar separadas por un margen de cuatro caracteres de espacio.
- Las columnas deben estar equilibradas para que todas tengan el mismo número de líneas si es posible.
- Las columnas más a la izquierda deben tener una línea adicional si es necesario.
- Cualquier salto de línea y espacios múltiples deben ser preservados. Los espacios finales son opcionales después de la última columna.
Ejemplos
Texto:
The number of columns will be a positive integer. Columns should be separated by a margin of four space characters.
The columns should be balanced. The column width is greater than two.
Columnas: 3, ancho: 10
The number separated ns should
of columns by a marg- be balanc-
will be a in of four ed. The
positive space cha- column wi-
integer. racters. dth is gr-
Columns eater than
should be The colum- two.
Texto:
This line is hyphenated.
This line, on the other hand, is not.
Columnas: 1, ancho: 20
This line is hyphen-
ated.
This line, on the
other hand, is not.
Texto: Tiny columns.
columnas: 4, ancho: 2
T- c- u- s.
i- o- m-
ny l- n-
Texto: Two spaces.<space>
columnas: 5, ancho: 2
T- p- c- s.
wo s- a- e-
Texto: <newline>A phrase
columnas: 2, ancho: 5
rase
A ph-
Texto: A short sentence.
columnas: 10, ancho: 5
A sh- ort sent- ence.
Texto: It's "no word" 1234567890 -+-+-+-+ (*&!)
columnas: 3, ancho: 6
It's 12345- +-+
"no 67890 (*&!)
word" -+-+--
Este es el código de golf ; Se aplican reglas estándar.
fuente
s:'tiny', c:4, w:2
=t- i- n- y
ot- i- ny
??t- i- ny
. ¿Está todo ahora o necesito arreglarlo de nuevo?tiny s
sert- i- n- y_ s
ot- i- ny s
Respuestas:
Python 2,
346338 bytesEntrada como
'string',C,W
fuente
rstrip()
.strip()
al final.C ++ 414
Gracias a @ceilingcat por algunas bonitas piezas de golf, ahora incluso más cortas
Pruébalo en línea!
fuente