เมื่อเขียนโค้ดใน Python บางครั้งคุณต้องการสตริงหลายบรรทัดภายในฟังก์ชันเช่น
def f():
s = """\
Line 1
Line 2
Line 3"""
(แบ็กสแลชคือการลบ newline ชั้นนำ)
อย่างไรก็ตามหากคุณพยายามที่จะพิมพ์ออกมาจริง ๆs
คุณจะได้รับ
Line 1
Line 2
Line 3
นั่นไม่ใช่สิ่งที่เราต้องการเลย! มีช่องว่างนำหน้ามากเกินไป!
ความท้าทาย
รับสตริงหลายบรรทัดที่ประกอบด้วยอักขระตัวอักษรและตัวเลขช่องว่างและบรรทัดใหม่เท่านั้นลบช่องว่างทั่วไปออกจากจุดเริ่มต้นของแต่ละบรรทัด แต่ละบรรทัดรับประกันว่าจะมีอักขระที่ไม่ใช่ช่องว่างอย่างน้อยหนึ่งตัวและจะไม่มีช่องว่างต่อท้าย เอาต์พุตอาจไม่มีช่องว่างภายนอกไม่ว่าจะเป็นก่อนหรือหลังเอาต์พุตทั้งหมดหรือแต่ละบรรทัด (ยกเว้นบรรทัดใหม่ที่เป็นทางเลือกหนึ่งบรรทัด)
อินพุตอาจผ่าน STDIN หรือฟังก์ชันอาร์กิวเมนต์และเอาต์พุตอาจผ่าน STDOUT หรือฟังก์ชันส่งคืนค่า คุณไม่สามารถใช้ builtins ใด ๆ ที่ถูกออกแบบมาเพื่อสตริงหลาย dedent textwrap.dedent
หรือดำเนินงานตรงนี้เช่นงูหลาม
นี่คือรหัสกอล์ฟดังนั้นการแก้ปัญหาในไบต์ที่น้อยที่สุดชนะ ช่องโหว่มาตรฐานใช้
กรณีทดสอบ
"a" -> "a"
" abc" -> "abc"
" abc\n def\n ghi" -> " abc\ndef\n ghi"
" a\n b\n c" -> "a\nb\nc"
" a\n b\n c\nd" -> " a\n b\n c\nd"
" a b\n c d\n e f" -> "a b\n c d\n e f"
ตัวอย่างเช่นกรณีทดสอบสุดท้ายคือ
a b
c d
e f
และควรมีลักษณะเช่นนี้หลังจากลอกช่องว่างนำหน้า:
a b
c d
e f