Escreva um programa ou função que, com algum texto, várias colunas e a largura da coluna, formate o texto em colunas. Isso é tipografia em texto simples .
Regras
Entrada
- O texto será uma sequência de caracteres ASCII imprimível e poderá conter novas linhas e espaços (mas não tabulações).
- O número de colunas será um número inteiro positivo.
- A largura da coluna é um número inteiro maior ou igual a 2 que especifica quantos caracteres por coluna.
Para esse desafio, uma palavra consistirá em caracteres que não sejam espaços em branco. A entrada consiste em uma sequência e dois números inteiros, que podem ser obtidos em qualquer ordem.
Resultado
Saída é o texto formatado em colunas balanceadas com quantas palavras em cada linha couberem.
- Se uma palavra for muito longa para caber em uma coluna, coloque-a na próxima linha se houver outra palavra na linha atual e a linha possa ser preenchida com a largura da coluna com três espaços ou menos.
- Caso contrário, hifenize a palavra para que ela preencha o restante da linha. Hifenize onde quer que a linha termine; não se preocupe em hifenizar entre sílabas.
- As colunas devem ser separadas por uma margem de quatro caracteres de espaço.
- As colunas devem ser balanceadas para que todas tenham um número igual de linhas, se possível.
- As colunas mais à esquerda devem ter uma linha extra, se necessário.
- Quaisquer quebras de linha e vários espaços devem ser preservados. Os espaços à direita são opcionais após a última coluna.
Exemplos
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.
Colunas: 3, largura: 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.
Colunas: 1, largura: 20
This line is hyphen-
ated.
This line, on the
other hand, is not.
Texto: Tiny columns.
colunas: 4, largura: 2
T- c- u- s.
i- o- m-
ny l- n-
Texto: Two spaces.<space>
colunas: 5, largura: 2
T- p- c- s.
wo s- a- e-
Texto: <newline>A phrase
colunas: 2, largura: 5
rase
A ph-
Texto: A short sentence.
colunas: 10, largura: 5
A sh- ort sent- ence.
Texto: It's "no word" 1234567890 -+-+-+-+ (*&!)
colunas: 3, largura: 6
It's 12345- +-+
"no 67890 (*&!)
word" -+-+--
Isso é código-golfe ; aplicam-se regras padrão.
s:'tiny', c:4, w:2
= t- i- n- y
ou t- i- ny
??
t- i- ny
. Está tudo certo agora ou preciso corrigi-lo novamente?
tiny s
ser t- i- n- y_ s
out- i- ny s