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.
Зауважте, що всі дефіси було видалено, окрім тієї, що міститься у фінальній "шині", яка показує, що слово переходить у наступний рядок, і було вибрано для того, щоб другий рядок містив якомога більше тексту.
Правила
У кожному рядку кількість пробілів між словами не може змінюватися більш ніж на 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
?