Фон
В типографии реки являются визуальными пробелами в блоке текста, которые возникают из-за совпадения пробелов. Это особенно раздражает, так как ваш мозг, кажется, легче воспринимает их при периферийном зрении, которое постоянно отвлекает ваши глаза.
В качестве примера возьмем следующий блок текста, строки которого разбиты так, что ширина строки не превышает 82 символов :
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eismod tempor
incididunt ut labore et dolore maga aliqua. Ut enim ad minim veniam, quis nostrud
exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute
irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui
officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet,
consectetur adipisicing elit, sed do eismod tempor incididunt ut labore et dolore
maga aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris
nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in
voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint
occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id
est laborum.
В нижней правой части есть река, охватывающая шесть линий, которые я выделил в следующем блоке:
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eismod tempor
incididunt ut labore et dolore maga aliqua. Ut enim ad minim veniam, quis nostrud
exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute
irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui
officia deserunt mollit anim id est laborum. Lorem█ipsum dolor sit amet,
consectetur adipisicing elit, sed do eismod tempor█incididunt ut labore et dolore
maga aliqua. Ut enim ad minim veniam, quis nostrud█exercitation ullamco laboris
nisi ut aliquip ex ea commodo consequat. Duis aute█irure dolor in reprehenderit in
voluptate velit esse cillum dolore eu fugiat nulla█pariatur. Excepteur sint
occaecat cupidatat non proident, sunt in culpa qui█officia deserunt mollit anim id
est laborum.
Мы можем смягчить это, выбрав немного другую ширину столбца. Например, если мы размещаем один и тот же текст, используя строки длиной не более 78 символов , река не длиннее двух строк:
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eismod tempor
incididunt ut labore et dolore maga aliqua. Ut enim ad minim veniam, quis
nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore
eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt
in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor
sit amet, consectetur adipisicing elit, sed do eismod tempor incididunt ut
labore et dolore maga aliqua. Ut enim ad minim veniam, quis nostrud
exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis
aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu
fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in
culpa qui officia deserunt mollit anim id est laborum.
Обратите внимание, что для целей этого вопроса мы рассматриваем только моноширинные шрифты, так что реки - это просто вертикальные столбцы пространств. Длина реки - это количество линий, которые она охватывает.
Если вы интересуетесь обнаружением реки пропорциональными шрифтами, в сети есть несколько интересных постов .
Соревнование
Вам дана строка печатных символов ASCII (кодовая точка от 0x20 до 0x7E) - то есть одна строка. Напечатайте этот текст с шириной строки от 70 до 90 символов (включительно), чтобы максимальная длина любой реки в тексте была минимальной. Если имеется несколько значений ширины текста с одинаковой (минимальной) максимальной длиной реки, выберите более узкую ширину. Приведенный выше пример с 78 символами является правильным выводом для этого текста.
Чтобы разбить строки, необходимо заменить пробелы (0x20) на разрывы строк, чтобы в результирующих строках было как можно больше символов, но не больше выбранной ширины текста. Обратите внимание, что результирующий разрыв строки сам по себе не является частью этого количества. Например, в последнем блоке выше Lorem[...]tempor
содержится 78 символов, что также является шириной текста.
Вы можете предположить, что входные данные не будут содержать последовательные пробелы и не будут иметь начальных или конечных пробелов. Вы также можете предположить, что ни одно слово (последовательная подстрока без пробелов) не будет содержать более 70 символов.
Вы можете написать программу или функцию, принимая ввод через STDIN, аргумент командной строки или аргумент функции и печатая результат в STDOUT.
Это код гольф, поэтому самый короткий ответ (в байтах) выигрывает.