sfondo
Nella tipografia, i fiumi sono vuoti visivi in un blocco di testo, che si verificano a causa dell'allineamento casuale di spazi. Questi sono particolarmente fastidiosi poiché il tuo cervello sembra raccoglierli più facilmente nella visione periferica, che distrae costantemente i tuoi occhi.
Ad esempio, prendi il seguente blocco di testo, linee spezzate in modo tale che la larghezza della linea non superi gli 82 caratteri :
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.
C'è un fiume che attraversa sei linee nella parte in basso a destra, che ho evidenziato nel seguente blocco:
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.
Possiamo mitigarlo scegliendo una larghezza di colonna leggermente diversa. Ad esempio, se impaginiamo lo stesso testo usando linee non più lunghe di 78 caratteri , non c'è fiume più lungo di due linee:
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.
Si noti che ai fini di questa domanda stiamo prendendo in considerazione solo i caratteri a spaziatura fissa, in modo che i fiumi siano semplicemente colonne verticali di spazi. La lunghezza di un fiume è il numero di linee che attraversa.
A parte: se sei interessante nel rilevamento del fiume in caratteri proporzionali, ci sono alcuni post interessanti nella rete.
La sfida
Ti viene data una stringa di caratteri ASCII stampabili (punti di codice da 0x20 a 0x7E), ovvero una singola riga. Stampa questo testo, con una larghezza della linea compresa tra 70 e 90 caratteri (incluso), in modo tale da ridurre al minimo la lunghezza massima di qualsiasi fiume nel testo. Se ci sono più larghezze di testo con la stessa (minima) lunghezza massima del fiume, scegli la larghezza più stretta. L'esempio sopra con 78 caratteri è l'output corretto per quel testo.
Per interrompere le linee, è necessario sostituire i caratteri di spazio (0x20) con le interruzioni di riga, in modo che le linee risultanti abbiano il maggior numero possibile di caratteri, ma non più della larghezza del testo scelta. Si noti che l'interruzione di riga risultante non fa parte di quel conteggio. Ad esempio, nell'ultimo blocco sopra, Lorem[...]tempor
contiene 78 caratteri, che è anche la larghezza del testo.
Si può presumere che l'input non conterrà spazi consecutivi e non avrà spazi iniziali o finali. Puoi anche supporre che nessuna parola (sottostringa consecutiva di non spazi) conterrà più di 70 caratteri.
È possibile scrivere un programma o una funzione, prendendo l'input tramite STDIN, argomento della riga di comando o argomento della funzione e stampando il risultato su STDOUT.
Questo è il golf del codice, quindi vince la risposta più breve (in byte).