Given a width and a block of
text containing possible hyphen-
ation points, format it fully-
justified (in monospace).
Полностью выровненный означает, что он выровнен по левому и правому краям и достигается путем увеличения расстояния между словами до тех пор, пока не совпадет каждая строка.
Связанный:
- Обоснуйте текст, добавив пробелы
- Выровнять текст по блоку
- И в некотором смысле это можно считать следующим шагом в Обработка текста № 1: переносы слов (который, кажется, никогда не был опубликован).
вход
Вы можете принять вход в любом формате, который вам нравится. Вам будет предоставлено:
- Целевая ширина (в символах), в диапазоне 5-100 (включительно);
- Блок текста, содержащий возможно дефисные слова. Это может быть строка, разделенная пробелом, массив слов или массив массивов фрагментов слов (или любое другое представление данных, которое вы пожелаете).
Типичный ввод может быть:
Width: 25
Text: There's no bu-si-ne-ss lik-e s-h-o-w busine-ss, n-o bus-iness I know.
Где дефисы обозначают возможные точки переноса, а пробелы обозначают границы слов. Возможное альтернативное представление текста:
[["There's"], ["no"], ["bu", "si", "ne", "ss"], ["lik", "e"], (etc.)]
Выход
Входной текст с пробелами, добавленными между словами, символами новой строки по ширине столбца и точками переноса, выбранными для полного выравнивания по ширине столбца. Для функций массив строк (по одной на каждую строку) может быть возвращен вместо использования разделения новой строки.
Возможный вывод для вышеуказанного ввода может быть:
There's no business like
show business, no bus-
iness I know.
Обратите внимание, что все дефисы были удалены, кроме одного в последнем «bus-iness», которое используется, чтобы показать, что слово переносится на следующую строку, и было выбрано так, чтобы вторая строка содержала как можно больше текста.
правила
В каждой строке количество пробелов между словами не может изменяться более чем на 1, но если вы вставляете лишние пробелы, это зависит от вас:
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)
Никакая строка не может начинаться или заканчиваться пробелами (кроме последней строки, которая может заканчиваться пробелами).
Последняя строка должна быть выровнена по левому краю и содержать одинарные пробелы между каждым словом. За ним может следовать произвольный пробел / символ новой строки, если это необходимо, но это не обязательно.
Слова будут состоять из AZ, az, 0-9 и простой пунктуации (
.,'()&
)Можно предположить, что ни один фрагмент слова не будет длиннее целевой ширины, и всегда будет возможно заполнить строки в соответствии с правилами (т. Е. В каждой строке будет как минимум 2 фрагмента слова или 1 фрагмент слова, заполняющий строку в совершенстве)
Вы должны выбрать точки переноса, которые максимизируют количество символов слова в более ранних строках (т.е. слова должны жадно потребляться строками), например:
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.
Самый короткий код в байтах выигрывает
Примеры
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
с шириной 7, мы можем выбрать для вывода сигнала anybody
или anybod-\ny
?