पृष्ठभूमि
टाइपोग्राफी में, नदियां पाठ के एक खंड में दृश्य अंतराल हैं, जो रिक्त स्थान के संयोग संरेखण के कारण होती हैं। ये विशेष रूप से कष्टप्रद हैं क्योंकि आपका मस्तिष्क उन्हें परिधीय दृष्टि में अधिक आसानी से उठाता है, जो लगातार आपकी आंखों को विचलित करता है।
एक उदाहरण के रूप में, पाठ के निम्नलिखित ब्लॉक को लें, लाइनें ऐसी टूटीं कि लाइन की चौड़ाई 82 वर्णों से अधिक न हो :
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.
नीचे दाहिने भाग में छह पंक्तियों में फैली एक नदी है, जिसे मैंने निम्नलिखित ब्लॉक में हाइलाइट किया है:
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.
हम थोड़ा अलग कॉलम चौड़ाई चुनकर इसे कम कर सकते हैं। उदाहरण के लिए, यदि हम 78 अक्षरों से अधिक रेखाओं का उपयोग करके एक ही पाठ को लेआउट करते हैं , तो दो पंक्तियों से अधिक लंबी कोई नदी नहीं है:
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.
ध्यान दें कि इस प्रश्न के उद्देश्य के लिए हम केवल मोनोपोज़ किए गए फोंट पर विचार कर रहे हैं, जैसे कि नदियाँ केवल रिक्त स्थान के ऊर्ध्वाधर स्तंभ हैं। एक नदी की लंबाई पंक्तियों की संख्या है जो इसे फैलाती है।
एक तरफ: यदि आप आनुपातिक फोंट में नदी का पता लगाने में दिलचस्प हैं, तो नेटवर्क के आसपास कुछ दिलचस्प पोस्ट हैं ।
चुनौती
आपको मुद्रण योग्य ASCII वर्ण (कोड बिंदु 0x20 से 0x7E तक) की एक स्ट्रिंग दी गई है - अर्थात एक पंक्ति। 70 और 90 अक्षरों (समावेशी) के बीच की रेखा चौड़ाई के साथ, इस पाठ को प्रिंट करें, जैसे कि अधिकतम पाठ में किसी भी नदी लंबाई कम से कम हो। यदि एक ही (न्यूनतम) अधिकतम नदी की लंबाई के साथ कई पाठ चौड़ाई हैं, तो संकीर्ण चौड़ाई चुनें। 78 अक्षरों वाला उपरोक्त उदाहरण उस पाठ के लिए सही आउटपुट है।
लाइनों को तोड़ने के लिए, आपको अंतरिक्ष के पात्रों (0x20) को लाइन ब्रेक से बदलना चाहिए, जैसे कि परिणामी लाइनों में यथासंभव अधिक वर्ण हों, लेकिन चुने हुए पाठ की चौड़ाई से अधिक नहीं। ध्यान दें कि परिणामी लाइन ब्रेक स्वयं उस गणना का हिस्सा नहीं है। एक उदाहरण के रूप में, ऊपर के अंतिम ब्लॉक में, Lorem[...]tempor
78 वर्ण हैं, जो पाठ की चौड़ाई भी है।
आप मान सकते हैं कि इनपुट में लगातार स्थान नहीं होंगे, और अग्रणी या अनुगामी स्थान नहीं होंगे। आप यह भी मान सकते हैं कि किसी भी शब्द (गैर-रिक्त स्थान का लगातार प्रतिस्थापन) में 70 से अधिक वर्ण नहीं होंगे।
आप प्रोग्राम या फ़ंक्शन लिख सकते हैं, STDIN, कमांड-लाइन तर्क या फ़ंक्शन तर्क के माध्यम से इनपुट ले सकते हैं और परिणाम को STDOUT में प्रिंट कर सकते हैं।
यह कोड गोल्फ है, इसलिए सबसे छोटा उत्तर (बाइट्स में) जीतता है।