Latar Belakang
Dalam tipografi, sungai adalah kesenjangan visual dalam blok teks, yang terjadi karena penyelarasan spasi secara kebetulan. Ini sangat menjengkelkan karena otak Anda tampaknya mengambilnya dengan lebih mudah dalam penglihatan tepi, yang terus-menerus mengganggu mata Anda.
Sebagai contoh, ambil blok teks berikut ini, garis-garis patah sehingga lebar garis tidak melebihi 82 karakter :
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.
Ada sungai yang membentang enam garis di bagian kanan bawah, yang saya soroti di blok berikut:
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.
Kami dapat mengurangi ini dengan memilih lebar kolom yang sedikit berbeda. Misalnya, jika kita tata letak teks yang sama menggunakan baris tidak lebih dari 78 karakter , tidak ada sungai lebih dari dua baris:
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.
Perhatikan bahwa untuk keperluan pertanyaan ini, kami hanya mempertimbangkan font monospasi, sehingga sungai hanyalah kolom spasi vertikal. Panjang sungai adalah jumlah garis yang terbentang.
Selain itu: Jika Anda tertarik dalam deteksi sungai dalam font proporsional, ada beberapa posting menarik di sekitar jaringan.
Tantangan
Anda diberi serangkaian karakter ASCII yang dapat dicetak (titik kode 0x20 hingga 0x7E) - yaitu satu baris. Cetak teks ini, dengan lebar garis antara 70 dan 90 karakter (termasuk), sehingga panjang maksimum dari sungai mana pun dalam teks dapat diminimalkan. Jika ada beberapa lebar teks dengan panjang sungai maksimum yang sama (minimal), pilih lebar yang lebih sempit. Contoh di atas dengan 78 karakter adalah output yang benar untuk teks itu.
Untuk memecah garis, Anda harus mengganti karakter spasi (0x20) dengan jeda baris, sehingga garis yang dihasilkan memiliki karakter sebanyak mungkin, tetapi tidak lebih dari lebar teks yang dipilih. Perhatikan bahwa jeda baris yang dihasilkan itu sendiri bukan bagian dari penghitungan itu. Sebagai contoh, di blok terakhir di atas, Lorem[...]tempor
berisi 78 karakter, yang juga lebar teks.
Anda dapat berasumsi bahwa input tidak akan berisi spasi berurutan, dan tidak akan memiliki spasi di depan atau di belakang. Anda juga dapat mengasumsikan bahwa tidak ada kata (substring non-spasi berturut-turut) akan berisi lebih dari 70 karakter.
Anda dapat menulis program atau fungsi, mengambil input melalui STDIN, argumen baris perintah atau argumen fungsi dan mencetak hasilnya ke STDOUT.
Ini kode golf, jadi jawaban tersingkat (dalam byte) menang.