Arka fon
Tipografide nehirler , rastlantısal boşlukların hizalanmasından dolayı oluşan bir metin bloğundaki görsel boşluklardır. Bunlar özellikle sinir bozucu çünkü beyniniz onları sürekli rahatsız eden periferik görüşte daha kolay alıyor gibi görünüyor.
Örnek olarak, aşağıdaki metin bloğunu alın, satır genişliği 82 karakteri geçmeyecek şekilde kesilmiş satırlar :
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.
Aşağıdaki satırda vurguladığım sağ alt kısımda altı çizgiyi kapsayan bir nehir var:
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.
Biraz farklı bir sütun genişliği seçerek bunu hafifletebiliriz. Örneğin, aynı metni 78 karakterden uzun olmayan satırları kullanarak düzenlersek, iki satırdan daha uzun nehir olmaz:
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.
Unutmayın ki bu sorunun amacı sadece monospaced yazı tiplerini göz önünde bulunduracağız. Bir nehrin uzunluğu, yaydığı hat sayısıdır.
Bir kenara: Eğer orantılı yazı tiplerinde nehir algılamasında ilginçseniz, ağın etrafında bazı ilginç yazılar var.
Meydan okuma
Size yazdırılabilir bir ASCII karakter dizisi (kod noktası 0x20 - 0x7E) verilir - yani tek bir satır. Metin içindeki herhangi bir nehrin maksimum uzunluğu en aza indirilecek şekilde, 70 ile 90 karakter (dahil) arasında bir çizgi genişliğiyle bu metni yazdırın . Aynı (minimum) maksimum nehir uzunluğuna sahip birden fazla metin genişliği varsa, daha dar genişliği seçin. 78 karakterden oluşan yukarıdaki örnek, bu metin için doğru çıktıdır.
Satırları kesmek için, boşluk karakterlerini (0x20) satır sonları ile değiştirmelisiniz, böylece sonuçta ortaya çıkan satırlar mümkün olduğu kadar karaktere sahip olur, ancak seçilen metin genişliğinden daha fazla olmaz. Ortaya çıkan satır sonu kendisinin bu sayının bir parçası olmadığını unutmayın. Örnek olarak, yukarıdaki son satırda Lorem[...]tempor
, metnin genişliği olan 78 karakter var.
Girişin ardışık boşluklar içermeyeceğini ve baştaki veya takip eden boşluklara sahip olmayacağını varsayabilirsiniz. Ayrıca hiçbir kelimenin (ardışık olmayan boşlukların alt dizesi) 70'den fazla karakter içermeyeceğini de varsayabilirsiniz.
STDIN, komut satırı argümanı veya işlev argümanı üzerinden giriş alarak ve sonucu STDOUT'a yazdırarak bir program veya işlev yazabilirsiniz.
Bu kod golf, yani en kısa cevap (bayt cinsinden) kazanır.