แกรมคือสตริงที่มีทุกตัวอักษรa
- z
ภาษาอังกฤษอักษรกรณีตาย (มันก็โอเคถ้า pangram มีมากกว่าหนึ่งสำเนาของตัวอักษรหรือถ้ามันมีตัวอักษรที่ไม่ใช่ตัวอักษรนอกเหนือจากตัวอักษร)
เขียนโปรแกรมหรือฟังก์ชั่นซึ่งอินพุตเป็นรายการของสตริงและเอาต์พุตหนึ่งหรือมากกว่าหนึ่งสตริงที่มีคุณสมบัติดังต่อไปนี้:
- สตริงเอาต์พุตแต่ละรายการต้องเป็น pangram
- แต่ละสตริงเอาต์พุตต้องถูกจัดรูปแบบโดยการต่อหนึ่งสตริงขึ้นไปจากรายการอินพุตคั่นด้วยช่องว่าง
- แต่ละสตริงเอาต์พุตต้องสั้นที่สุดหรือผูกให้สั้นที่สุดในบรรดาสตริงทั้งหมดที่มีคุณสมบัติเหล่านี้
หลายโปรแกรมจะเลือกที่จะส่งออกเพียงหนึ่งสาย; คุณเพียงแค่ต้องการส่งออกมากกว่าหนึ่งสายถ้าคุณต้องเขียนโค้ดพิเศษเพื่อ จำกัด การส่งออก
คุณอาจคิดว่าอินพุตไม่มีอักขระหรือช่องว่างที่ไม่สามารถพิมพ์ได้และไม่มีคำใดในนั้นเกินกว่า 26 เท่าของลอการิทึมธรรมชาติของความยาวของรายการ) อักขระ (อย่างไรก็ตามคุณไม่สามารถสันนิษฐานได้ว่าอินพุตนั้นไม่มีอะไรนอกจากตัวอักษรหรืออักษรตัวพิมพ์เล็กเท่านั้นเครื่องหมายวรรคตอนและตัวพิมพ์ใหญ่เป็นไปได้ทั้งหมด)
อินพุตและเอาต์พุตสามารถกำหนดในรูปแบบที่เหมาะสม สำหรับการทดสอบโปรแกรมของคุณฉันขอแนะนำให้ใช้สองกรณีทดสอบ: พจนานุกรมคำศัพท์ภาษาอังกฤษ (คอมพิวเตอร์ส่วนใหญ่มีหนึ่งกรณี) และกรณีต่อไปนี้ (ซึ่ง pangram ที่สมบูรณ์แบบ (26 ตัวอักษร) เป็นไปไม่ได้ดังนั้นคุณจะต้องค้นหา มีตัวอักษรซ้ำซ้อน):
abcdefghi
defghijkl
ijklmnop
lmnopqrs
opqrstuvw
rstuvwxyz
คุณควรรวมตัวอย่างผลลัพธ์ของโปรแกรมพร้อมกับการส่งของคุณ (สิ่งนี้อาจแตกต่างกันไปสำหรับคนอื่นเนื่องจากการใช้รายการคำที่แตกต่างกัน)
เงื่อนไขชัยชนะ
นี่เป็นความ ท้าทายที่ซับซ้อนของรหัส - กอล์ฟ ผู้ชนะคือโปรแกรมที่สั้นที่สุด (ไบต์) ที่วิ่งในเวลาพหุนาม (สรุปสำหรับผู้ที่ไม่ทราบความหมาย: ถ้าคุณเพิ่มขนาดของรายการคำสองเท่าโปรแกรมควรช้าลงโดยไม่เกินค่าคงที่อย่างไรก็ตามปัจจัยคงที่ในคำถามอาจมีขนาดใหญ่เท่ากับคุณ เช่น. ตัวอย่างเช่นมันใช้ได้สำหรับการช้าลงสี่เท่าหรือช้ากว่าแปดครั้ง แต่ไม่เล็กลงตามความยาวของรายการคำ; ปัจจัยที่มันจะช้าลงต้องถูก จำกัด )