Hintergrund
In der Typografie sind Flüsse visuelle Lücken in einem Textblock, die durch zufällige Ausrichtung von Räumen entstehen. Diese sind besonders ärgerlich, da Ihr Gehirn sie in der peripheren Sicht leichter zu erfassen scheint, was Ihre Augen ständig ablenkt.
Nehmen Sie als Beispiel den folgenden Textblock, wobei die Zeilen so unterbrochen sind, dass die Zeilenbreite 82 Zeichen nicht überschreitet :
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.
Im unteren rechten Teil gibt es einen Fluss, der sich über sechs Linien erstreckt, die ich im folgenden Block hervorgehoben habe:
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.
Wir können dies abschwächen, indem wir eine etwas andere Spaltenbreite wählen. Wenn wir beispielsweise denselben Text mit Zeilen von nicht mehr als 78 Zeichen gestalten , gibt es keinen Fluss, der länger als zwei Zeilen ist:
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.
Beachten Sie, dass wir für diese Frage nur Schriften mit einem einheitlichen Abstand betrachten, sodass Flüsse einfach vertikale Spalten von Räumen sind. Die Länge eines Flusses ist die Anzahl der Zeilen, die er überspannt.
Nebenbei: Wenn Sie an der Flusserkennung in proportionalen Schriftarten interessiert sind, gibt es einige interessante Beiträge im Netzwerk.
Die Herausforderung
Sie erhalten eine Zeichenfolge mit druckbaren ASCII-Zeichen (Codepunkt 0x20 bis 0x7E) - dh eine einzelne Zeile. Drucken Sie diesen Text mit einer Zeilenbreite zwischen 70 und 90 Zeichen (einschließlich) aus, sodass die maximale Länge eines Flusses im Text minimiert wird. Wenn es mehrere Textbreiten mit derselben (minimalen) maximalen Flusslänge gibt, wählen Sie die schmalere Breite. Das obige Beispiel mit 78 Zeichen ist die richtige Ausgabe für diesen Text.
Um Zeilen umzubrechen, sollten Sie Leerzeichen (0x20) durch Zeilenumbrüche ersetzen, sodass die resultierenden Zeilen so viele Zeichen wie möglich enthalten, jedoch nicht mehr als die ausgewählte Textbreite. Beachten Sie, dass der resultierende Zeilenumbruch selbst nicht Teil dieser Anzahl ist. Beispielsweise Lorem[...]tempor
enthält der letzte Block oben 78 Zeichen, was auch der Breite des Texts entspricht.
Sie können davon ausgehen, dass die Eingabe keine aufeinander folgenden Leerzeichen und keine führenden oder nachfolgenden Leerzeichen enthält. Sie können auch davon ausgehen, dass kein Wort (aufeinanderfolgende Teilzeichenfolge von Nicht-Leerzeichen) mehr als 70 Zeichen enthält.
Sie können ein Programm oder eine Funktion schreiben, Eingaben über STDIN, ein Befehlszeilenargument oder ein Funktionsargument vornehmen und das Ergebnis in STDOUT ausgeben.
Dies ist Codegolf, daher gewinnt die kürzeste Antwort (in Bytes).