พื้นหลัง
ในการพิมพ์ตัวอักษรแม่น้ำเป็นช่องว่างที่มองเห็นได้ในบล็อกของข้อความซึ่งเกิดขึ้นเนื่องจากการจัดตำแหน่งของช่องว่างโดยบังเอิญ สิ่งเหล่านี้น่ารำคาญเป็นพิเศษเนื่องจากสมองของคุณดูเหมือนจะหยิบมันง่ายขึ้นในสายตาที่ต่อพ่วงซึ่งทำให้ตาของคุณเสียสมาธิ
ยกตัวอย่างเช่นใช้บล็อกข้อความต่อไปนี้บรรทัดที่แตกจนความกว้างบรรทัดไม่เกิน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
นี่คือรหัสกอล์ฟดังนั้นคำตอบที่สั้นที่สุด (เป็นไบต์) ชนะ