Given a width and a block of
text containing possible hyphen-
ation points, format it fully-
justified (in monospace).
Totalmente justificado significa que ele está alinhado à esquerda e à direita e é alcançado aumentando o espaçamento entre as palavras até que cada linha se ajuste.
Palavras-chave:
- Justifique um texto adicionando espaços
- Alinhar o texto a um bloco
- E de certa forma isso pode ser considerado o próximo passo no Processamento de texto nº 1: Hifenização (que parece nunca ter sido publicado).
Entrada
Você pode receber entradas em qualquer formato que desejar. Você receberá:
- Uma largura de destino (em caracteres), no intervalo de 5 a 100 (inclusive);
- Um bloco de texto contendo palavras possivelmente hifenizadas. Pode ser uma cadeia de caracteres separada por espaço, uma matriz de palavras ou uma matriz de matrizes de fragmentos de palavras (ou qualquer outra representação de dados que você desejar).
Uma entrada típica pode 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.
Onde os hífens indicam possíveis pontos de hifenização e os espaços indicam limites de palavras. Uma possível representação alternativa do texto:
[["There's"], ["no"], ["bu", "si", "ne", "ss"], ["lik", "e"], (etc.)]
Saída
O texto de entrada com espaços adicionados entre palavras, novas linhas na largura da coluna e pontos de hifenização escolhidos para justificá-lo totalmente à largura da coluna. Para funções, uma matriz de seqüências de caracteres (uma para cada linha) pode ser retornada em vez de usar a separação de nova linha.
Uma saída possível para a entrada acima pode ser:
There's no business like
show business, no bus-
iness I know.
Observe que todos os hífens foram removidos, exceto aquele no "bus-iness" final, que é mantido para mostrar que a palavra passa para a próxima linha e foi escolhido para garantir que a segunda linha contenha o máximo de texto possível.
Regras
Dentro de cada linha, o número de espaços entre as palavras não pode variar em mais de 1, mas onde você insere os espaços extras depende de você:
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)
Nenhuma linha pode começar ou terminar com espaços (exceto a última linha, que pode terminar com espaços).
A última linha deve ser justificada à esquerda, contendo espaços únicos entre cada palavra. Pode ser seguido por espaço em branco arbitrário / uma nova linha, se desejado, mas isso não é necessário.
As palavras consistirão em AZ, az, 0-9 e pontuação simples (
.,'()&
)Você pode assumir que nenhum fragmento de palavra será maior que a largura do alvo e sempre será possível preencher linhas de acordo com as regras (ou seja, haverá pelo menos 2 fragmentos de palavra em cada linha ou 1 fragmento de palavra que preenche a linha perfeitamente)
Você deve escolher pontos de hifenização que maximizem o número de caracteres de palavras nas linhas anteriores (ou seja, as palavras devem ser consumidas avidamente pelas linhas), por exemplo:
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.
O menor código em bytes ganha
Exemplos
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
com a largura 7, podemos escolher a saída anybody
ou anybod-\ny
?