Given a width and a block of
text containing possible hyphen-
ation points, format it fully-
justified (in monospace).
W pełni uzasadniony oznacza, że jest wyrównany do lewej i prawej strony i jest osiągany przez zwiększenie odstępów między słowami, aż każda linia się dopasuje.
Związane z:
- Wyjustuj tekst, dodając spacje
- Wyrównaj tekst do bloku
- I w pewnym sensie można to uznać za kolejny krok w przetwarzaniu tekstu nr 1: dzielenie wyrazów (który wydaje się nigdy nie został opublikowany).
Wkład
Możesz pobierać dane w dowolnym formacie. Dostaniesz:
- Docelowa szerokość (w znakach), w zakresie 5-100 (włącznie);
- Blok tekstu zawierający możliwe słowa z łącznikami. Może to być ciąg oddzielony spacją, tablica słów lub tablica fragmentów słów (lub dowolna inna reprezentacja danych, której pragniesz).
Typowe dane wejściowe mogą być:
Width: 25
Text: There's no bu-si-ne-ss lik-e s-h-o-w busine-ss, n-o bus-iness I know.
Gdzie łączniki oznaczają możliwe punkty dzielenia wyrazów, a spacje oznaczają granice słów. Możliwa alternatywna reprezentacja tekstu:
[["There's"], ["no"], ["bu", "si", "ne", "ss"], ["lik", "e"], (etc.)]
Wydajność
Tekst wejściowy ze spacjami dodanymi między słowami, nowymi liniami na szerokości kolumny i punktami dzielenia zaznaczonymi w celu pełnego wyrównania do szerokości kolumny. W przypadku funkcji zamiast tablicy rozdzielającej nowy wiersz można zwrócić tablicę ciągów (po jednym dla każdej linii).
Możliwe wyjście dla powyższych danych wejściowych może być:
There's no business like
show business, no bus-
iness I know.
Zauważ, że wszystkie myślniki zostały usunięte z wyjątkiem tego w ostatnim „bus-iness”, który jest utrzymywany, aby pokazać, że słowo zawija się do następnego wiersza, i został wybrany, aby drugi wiersz zawierał jak najwięcej tekstu.
Zasady
W każdym wierszu liczba spacji między słowami nie może się różnić o więcej niż 1, ale w przypadku wstawienia dodatkowych spacji zależy od Ciebie:
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)
Żadna linia nie może zaczynać się ani kończyć spacjami (z wyjątkiem ostatniej linii, która może kończyć się spacjami).
Ostatni wiersz powinien być wyrównany do lewej strony, zawierający pojedyncze spacje między każdym słowem. W razie potrzeby może następować dowolna biała spacja / nowa linia, ale nie jest to wymagane.
Słowa będą się składać z AZ, az, 0-9 i prostej interpunkcji (
.,'()&
)Możesz założyć, że żaden fragment słowa nie będzie dłuższy niż szerokość docelowa i zawsze będzie możliwe wypełnienie wierszy zgodnie z regułami (tj. W każdym wierszu będą znajdować się co najmniej 2 fragmenty słów lub 1 fragment słowa, który wypełnia linię doskonale)
Musisz wybrać punkty dzielenia wyrazów, które maksymalizują liczbę znaków słów we wcześniejszych wierszach (tzn. Słowa muszą być zachłannie konsumowane przez linie), na przykład:
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.
Najkrótszy kod w bajtach wygrywa
Przykłady
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
o szerokości 7, możemy zdecydować się na wyjście albo anybody
czy anybod-\ny
?