บทนำ
นักกอล์ฟรหัสส่วนใหญ่ที่นี่เพิ่มคำอธิบายลงในผลงานของพวกเขาดังนั้นจึงง่ายต่อการเข้าใจว่าเกิดอะไรขึ้น โดยปกติแล้ว codelines จะอยู่ทางซ้ายและคำอธิบายที่เกี่ยวข้องทางด้านขวาพร้อมกับตัวคั่นบางชนิด เพื่อให้ดูสวยตัวคั่นทั้งหมดอยู่ในคอลัมน์เดียวกัน ข้อความอธิบายที่ยาวมักจะถูกรวมอยู่ในบรรทัดถัดไปดังนั้นผู้อ่านจึงไม่ต้องเลื่อนในแนวนอนเพื่ออ่านทุกอย่าง
อย่างไรก็ตามเมื่อคุณต้องการแก้ไขคำอธิบายนี้เนื่องจากคุณสร้างสนามกอล์ฟที่บ้าคลั่งคุณมักจะเสียเวลาในการทำให้คำอธิบายของคุณกลับมาสวยอีกครั้ง เนื่องจากนี่เป็นงานที่ต้องทำซ้ำคุณจึงต้องเขียนโปรแกรมสำหรับสิ่งนี้
ความท้าทาย
รับโค้ดหลายบรรทัดพร้อมคำอธิบายและตัวคั่นเอาท์พุทโค้ดที่จัดรูปแบบอย่างสวยงามพร้อมคำอธิบาย
ตัวอย่าง
อินพุต
shM-crz1dc4. "ANDBYOROF # z = อินพุต rz1 # แปลงอินพุตเป็นตัวพิมพ์ใหญ่ cd # split อินพุตบนช่องว่าง c4. "ANDBYOROF # สร้างรายการคำจากสตริงที่บรรจุซึ่งจะถูกละเว้น - # กรองคำเหล่านั้นออก hM # ใช้ตัวอักษรตัวแรกของทุกคำเท่านั้น s # เข้าร่วมพวกเขาเป็นหนึ่งสาย
เอาท์พุต
shM-crz1dc4. "ANDBYOROF # z = อินพุต rz1 # แปลงอินพุตเป็นตัวพิมพ์ใหญ่ cd # split อินพุตบนช่องว่าง c4. "ANDBYOROF # สร้างรายการคำจากสตริงที่บรรจุซึ่งจะเป็น # ละเว้น - # กรองคำเหล่านั้นออก hM # ใช้ตัวอักษรตัวแรกของทุกคำเท่านั้น s # เข้าร่วมพวกเขาเป็นหนึ่งสาย
คุกกี้หนึ่งอันสำหรับคุกกี้แรกที่สามารถค้นหาว่ารหัสนี้ทำอะไร
อัลกอริทึมการจัดรูปแบบ
- ค้นหาบรรทัดโค้ดที่ยาวที่สุด (ไม่รวมคำอธิบายและช่องว่างระหว่างโค้ดและตัวคั่น)
- เพิ่ม 5 ช่องว่างหลังจากบรรทัดโค้ดนี้และผนวกตัวคั่นที่สอดคล้องกันพร้อมคำอธิบาย นี่คือบรรทัดอ้างอิง
- ปรับทุกบรรทัดอื่นให้เป็นบรรทัดอ้างอิงนี้เพื่อให้ตัวแยกทั้งหมดอยู่ในคอลัมน์เดียวกัน
- ตัดบรรทัดทั้งหมดที่มีความยาวมากกว่า 93 อักขระลงในบรรทัดใหม่ด้วยวิธีต่อไปนี้:
- ค้นหาคำสุดท้ายที่ลงท้ายด้วยคอลัมน์ 93 หรือต่ำกว่า
- ใช้คำทั้งหมดหลังจากนี้และห่อให้เป็นบรรทัดใหม่ด้วยตัวคั่นนำและระยะห่างที่ถูกต้อง ช่องว่างระหว่างสองคำเหล่านั้นจะต้องถูกลบดังนั้นบรรทัดแรกลงท้ายด้วยอักขระคำและบรรทัดที่สองเริ่มต้นด้วยหนึ่งหลังจากตัวคั่น
- หากบรรทัดผลลัพธ์ยังคงมีความยาวมากกว่า 93 ตัวอักษรให้ทำซ้ำอีกจนกว่าทุกบรรทัดจะต่ำกว่า 94 ตัวอักษร
หมายเหตุ
- คำประกอบด้วยอักขระที่ไม่ใช่ช่องว่าง คำถูกคั่นด้วยช่องว่างเดียว
- การตัดคำสามารถทำได้เสมอ ซึ่งหมายความว่าไม่มีคำใดที่ยาวเกินกว่าจะทำให้เป็นไปไม่ได้
- อินพุตจะมีเฉพาะ ASCII ที่พิมพ์ได้และจะไม่มีช่องว่างต่อท้าย
- ตัวคั่นจะปรากฏเพียงครั้งเดียวต่อบรรทัด
- ในขณะที่คำอธิบายสามารถมีความยาวไม่ จำกัด ตัวคั่นและรหัสสามารถมีความยาวสูงสุดรวมกันได้
93 - 5 = 87
เท่านั้น 5 ตัวอักษรเป็นช่องว่างระหว่างรหัสและตัวคั่น รหัสและตัวคั่นจะมีความยาวอย่างน้อยหนึ่งตัวอักษร - อินพุตอาจมีบรรทัดว่าง สิ่งเหล่านี้จะไม่มีอักขระใด ๆ (ยกเว้นขึ้นบรรทัดใหม่หากคุณรับข้อมูลเป็นสตริงหลายบรรทัด) บรรทัดว่างเหล่านั้นจะต้องมีอยู่ในเอาต์พุตเช่นกัน
- ทุกบรรทัดจะมีโค้ดตัวคั่นและคำอธิบาย ข้อยกเว้นเป็นบรรทัดว่าง
- คุณสามารถรับอินพุตในรูปแบบที่เหมาะสมได้ตราบใดที่ยังไม่ได้ประมวลผลล่วงหน้า ทำให้ชัดเจนในคำตอบที่คุณใช้
- เอาต์พุตสามารถเป็นสตริงหลายบรรทัดหรือรายการของสตริง
กฎระเบียบ
- อนุญาตให้ใช้ฟังก์ชั่นหรือโปรแกรมเต็มรูปแบบ
- กฎเริ่มต้นสำหรับอินพุต / เอาต์พุต
- ช่องโหว่มาตรฐานใช้
- นี่คือcode-golfดังนั้นจำนวนไบต์ที่น้อยที่สุดจึงชนะ Tiebreaker เป็นการส่งก่อนหน้า
กรณีทดสอบ
รูปแบบอินพุตที่นี่คือรายการของสตริงที่แทนบรรทัดและสตริงเดี่ยวสำหรับตัวคั่น ทั้งสองคั่นด้วยเครื่องหมายจุลภาค เอาท์พุทเป็นรายการของสตริง
['shM-crz1dc4. "ANDBYOROF # z = อินพุต', '', 'rz1 # แปลงอินพุตเป็นตัวพิมพ์ใหญ่', 'cd # อินพุตแยกบนช่องว่าง', 'c4." ANDBYOROF # สร้างรายการของคำจากแพ็กเกจ สตริงซึ่งจะถูกละเว้น ',' - # กรองคำเหล่านั้นออก ',' hM # ใช้ตัวอักษรตัวแรกของคำทั้งหมด ',' s # รวมเข้าด้วยกันเป็นหนึ่งสตริง '], "#" -> [' shM-crz1dc4 . "ANDBYOROF # z = input ',' ',' rz1 # แปลงอินพุตเป็นตัวพิมพ์ใหญ่ ',' cd # อินพุตแบบแยกในช่องว่าง ',' c4." ANDBYOROF # สร้างรายการคำจากสตริงที่บรรจุซึ่งจะเป็น ' , '# ละเว้น', '- # กรองคำเหล่านั้นออก ',' hM # ใช้ตัวอักษรตัวแรกของคำทั้งหมด ',' s # รวมคำเหล่านั้นไว้ในสตริงเดียว '] ['codecodecode e # คำอธิบาย', 'sdf dsf sdf e # A มากมากมากมากยาวมากยาวมากยาวยาวยาวยาวยาวยาวยาวนานนานคำอธิบายยาวนานและมันก็จะยาวขึ้นเรื่อย ๆ ', '', 'บางคน codee # เพิ่มเติมและคำอธิบายเพิ่มเติม '],' e # "-> ['codecodecode e # คำอธิบาย', 'sdf dsf sdf e # A มากมากมากมากยาวมากยาวนาน', 'ยาว # คำอธิบายที่ยาวเป็นเวลานานและมันยาวขึ้นเรื่อย ๆ ',' e # และอีกต่อไป ',' ',' อีกรหัส e # และอีกคำอธิบายเพิ่มเติม ']
Happy Coding!
length of the longest code-line + 5
เสมอ นอกจากนี้ยังนำไปใช้กับบรรทัดที่มีคำอธิบายเพียงอย่างเดียวเพราะมันถูกห่อหุ้ม