Given a width and a block of
text containing possible hyphen-
ation points, format it fully-
justified (in monospace).
Completamente giustificato significa che è allineato a sinistra e a destra e si ottiene aumentando la spaziatura tra le parole fino a quando ogni linea si adatta.
Relazionato:
- Giustifica un testo aggiungendo spazi
- Allinea il testo a un blocco
- E in un certo senso questo può essere considerato il prossimo passo nell'elaborazione del testo n. 1: Sillabazione (che sembra non essere mai stata pubblicata).
Ingresso
Puoi ricevere input in qualsiasi formato tu voglia. Ti verrà dato:
- Una larghezza target (in caratteri), nell'intervallo 5-100 (incluso);
- Un blocco di testo contenente eventualmente parole sillabate. Potrebbe trattarsi di una stringa separata dallo spazio, una matrice di parole o una matrice di matrici di frammenti di parole (o qualsiasi altra rappresentazione di dati desiderata).
Un input tipico potrebbe essere:
Width: 25
Text: There's no bu-si-ne-ss lik-e s-h-o-w busine-ss, n-o bus-iness I know.
Dove i trattini indicano possibili punti di sillabazione e gli spazi indicano i confini delle parole. Una possibile rappresentazione alternativa del testo:
[["There's"], ["no"], ["bu", "si", "ne", "ss"], ["lik", "e"], (etc.)]
Produzione
Il testo di input con spazi aggiunti tra le parole, le nuove linee alla larghezza della colonna e i punti di sillabazione scelti per giustificarlo completamente alla larghezza della colonna. Per le funzioni, è possibile restituire una matrice di stringhe (una per ogni riga) anziché utilizzare la separazione newline.
Un possibile output per l'ingresso sopra potrebbe essere:
There's no business like
show business, no bus-
iness I know.
Si noti che tutti i trattini sono stati rimossi tranne quello nel "bus-iness" finale, che viene mantenuto per mostrare che la parola si sposta sulla riga successiva ed è stata scelta per garantire che la seconda riga contenga il maggior numero di testo possibile.
Regole
All'interno di ogni riga, il numero di spazi tra le parole non può variare di più di 1, ma dove si inseriscono gli spazi extra dipende da te:
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)
Nessuna linea può iniziare o terminare con spazi (tranne l'ultima riga, che può terminare con spazi).
L'ultima riga deve essere lasciata giustificata, contenente spazi singoli tra ogni parola. Se lo si desidera, può essere seguito da uno spazio bianco arbitrario / una nuova riga, ma ciò non è necessario.
Le parole saranno costituite da AZ, az, 0-9 e punteggiatura semplice (
.,'()&
)Si può presumere che nessun frammento di parole sarà più lungo della larghezza del bersaglio e che sarà sempre possibile riempire le linee secondo le regole (cioè ci saranno almeno 2 frammenti di parole su ogni riga o 1 frammento di parole che riempie la riga perfettamente)
È necessario scegliere i punti di sillabazione che massimizzano il numero di caratteri di parole nelle righe precedenti (ovvero le parole devono essere consumate avidamente dalle righe), ad esempio:
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.
Vince il codice più breve in byte
Esempi
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 larghezza 7, possiamo scegliere di produrre anybody
o anybod-\ny
?