Lý lịch
Trong kiểu chữ, các dòng sông là những khoảng trống trực quan trong một khối văn bản, xảy ra do sự liên kết ngẫu nhiên của các không gian. Điều này đặc biệt khó chịu vì não của bạn dường như dễ dàng lấy chúng hơn trong tầm nhìn ngoại vi, khiến mắt bạn liên tục bị phân tâm.
Ví dụ: lấy khối văn bản sau, các dòng bị hỏng sao cho độ rộng của dòng không vượt quá 82 ký tự :
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ó một dòng sông trải dài sáu dòng ở phần dưới cùng bên phải, mà tôi đã nhấn mạnh trong khối sau:
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.
Chúng ta có thể giảm thiểu điều này bằng cách chọn chiều rộng cột hơi khác nhau. Ví dụ: nếu chúng ta bố trí cùng một văn bản bằng các dòng không dài hơn 78 ký tự , thì không có dòng sông nào dài hơn hai dòng:
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.
Lưu ý rằng với mục đích của câu hỏi này, chúng tôi chỉ xem xét các phông chữ đơn cách, sao cho các dòng sông chỉ đơn giản là các cột không gian thẳng đứng. Độ dài của một con sông là số dòng nó kéo dài.
Ngoài ra: Nếu bạn thú vị trong việc phát hiện dòng sông theo phông chữ tỷ lệ, có một số bài viết thú vị trên mạng.
Các thách thức
Bạn được cung cấp một chuỗi các ký tự ASCII có thể in (điểm mã 0x20 đến 0x7E) - tức là một dòng đơn. In văn bản này, với độ rộng dòng từ 70 đến 90 ký tự (đã bao gồm), sao cho độ dài tối đa của bất kỳ dòng sông nào trong văn bản được giảm thiểu. Nếu có nhiều chiều rộng văn bản có cùng chiều dài sông tối thiểu (tối thiểu), hãy chọn chiều rộng hẹp hơn. Ví dụ trên với 78 ký tự là đầu ra chính xác cho văn bản đó.
Để ngắt dòng, bạn nên thay thế các ký tự khoảng trắng (0x20) bằng các ngắt dòng, sao cho các dòng kết quả có càng nhiều ký tự càng tốt, nhưng không lớn hơn chiều rộng văn bản đã chọn. Lưu ý rằng chính kết quả ngắt dòng không phải là một phần của số đó. Ví dụ, trong khối cuối cùng ở trên, Lorem[...]tempor
chứa 78 ký tự, cũng là chiều rộng của văn bản.
Bạn có thể cho rằng đầu vào sẽ không chứa các khoảng trắng liên tiếp và sẽ không có khoảng trắng ở đầu hoặc cuối. Bạn cũng có thể cho rằng không có từ nào (chuỗi con liên tiếp không dấu cách) sẽ chứa hơn 70 ký tự.
Bạn có thể viết chương trình hoặc hàm, lấy đầu vào qua STDIN, đối số dòng lệnh hoặc đối số hàm và in kết quả sang STDOUT.
Đây là mã golf, vì vậy câu trả lời ngắn nhất (tính bằng byte) sẽ thắng.