Given a width and a block of
text containing possible hyphen-
ation points, format it fully-
justified (in monospace).
Vollständig ausgerichtet bedeutet, dass es links und rechts ausgerichtet ist und durch Vergrößern des Abstands zwischen Wörtern erreicht wird, bis jede Zeile passt.
Verbunden:
- Richten Sie einen Text durch Hinzufügen von Leerzeichen aus
- Richten Sie den Text an einem Block aus
- In gewisser Weise kann dies als nächster Schritt in Textverarbeitung Nr. 1 betrachtet werden: Silbentrennung (die anscheinend noch nie veröffentlicht wurde).
Eingang
Sie können Eingaben in jedem beliebigen Format vornehmen. Sie erhalten:
- Eine Zielbreite (in Zeichen) im Bereich von 5 bis einschließlich 100;
- Ein Textblock, der möglicherweise getrennte Wörter enthält. Dies kann eine durch Leerzeichen getrennte Zeichenfolge, ein Array von Wörtern oder ein Array von Arrays von Wortfragmenten (oder jede andere von Ihnen gewünschte Datendarstellung) sein.
Eine typische Eingabe könnte sein:
Width: 25
Text: There's no bu-si-ne-ss lik-e s-h-o-w busine-ss, n-o bus-iness I know.
Wo die Bindestriche mögliche Trennungspunkte und die Leerzeichen Wortgrenzen bezeichnen. Eine mögliche alternative Darstellung des Textes:
[["There's"], ["no"], ["bu", "si", "ne", "ss"], ["lik", "e"], (etc.)]
Ausgabe
Der Eingabetext mit Leerzeichen zwischen Wörtern, Zeilenumbrüchen an der Spaltenbreite und Trennungspunkten, die ausgewählt wurden, um ihn vollständig an der Spaltenbreite auszurichten. Für Funktionen kann ein Array von Zeichenfolgen (eine für jede Zeile) zurückgegeben werden, anstatt die Zeilenumbruchtrennung zu verwenden.
Eine mögliche Ausgabe für die obige Eingabe könnte sein:
There's no business like
show business, no bus-
iness I know.
Beachten Sie, dass alle Bindestriche entfernt wurden, mit Ausnahme der in der letzten "Bus-Iness", die beibehalten wird, um anzuzeigen, dass das Wort in die nächste Zeile umgebrochen wird, und ausgewählt wurde, um sicherzustellen, dass die zweite Zeile so viel Text wie möglich enthält.
Regeln
Innerhalb jeder Zeile darf die Anzahl der Leerzeichen zwischen Wörtern nicht mehr als 1 betragen. Ansonsten liegt es an Ihnen, wo Sie die zusätzlichen Leerzeichen einfügen:
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)
Keine Zeile darf mit Leerzeichen beginnen oder enden (mit Ausnahme der letzten Zeile, die mit Leerzeichen enden darf).
Die letzte Zeile sollte mit einem Leerzeichen zwischen den einzelnen Wörtern ausgerichtet bleiben. Auf Wunsch kann ein beliebiges Leerzeichen / eine neue Zeile folgen, dies ist jedoch nicht erforderlich.
Wörter bestehen aus AZ, az, 0-9 und einfacher Interpunktion (
.,'()&
)Sie können davon ausgehen, dass kein Wortfragment länger als die Zielbreite ist und dass es immer möglich ist, Zeilen gemäß den Regeln zu füllen (dh, auf jeder Zeile befinden sich mindestens 2 Wortfragmente oder 1 Wortfragment, das die Zeile ausfüllt perfekt)
Sie müssen Silbentrennzeichen auswählen, die die Anzahl der Wortzeichen in früheren Zeilen maximieren (dh Wörter müssen gierig von Zeilen konsumiert werden), zum Beispiel:
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.
Kürzester Code in Bytes gewinnt
Beispiele
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
mit der Breite 7, können wir entweder anybody
oder ausgeben anybod-\ny
?