เราทุกคนรู้ถึงอัลกอริธึมการเรียงลำดับแฟนซีที่แตกต่างกัน แต่ไม่มีสิ่งใดที่จะบอกตัวเลขในวิธีที่ง่ายต่อการออกเสียง เพื่อแก้ไขสิ่งนี้ฉันเสนอให้ใช้ PronunciationSort ™วิธีที่เป็นธรรมชาติที่สุดในการเรียงลำดับรายการตัวเลข
การออกเสียง
กฎอย่างเป็นทางการสำหรับตัวเลขการออกเสียง (ในการท้าทายนี้) คือตัวเลขจะออกเสียงทีละตัวและสตริงผลลัพธ์จะเรียงตามลำดับพจนานุกรม เป็นตัวอย่างซึ่งหมายความว่าตัวเลข845
นั้นออกเสียง"eight four five"
และควรเรียงตาม
ตัวเลขติดลบ
ตัวเลขลบจะออกเสียงโดยการเติมคำ"minus"
นั้น ดังนั้นจะออกเสียงเป็น-23
"minus two three"
โปรดทราบว่าสิ่งนี้ทำให้ตัวเลขติดลบจบลงตรงกลางของเอาต์พุตขวาระหว่างตัวเลขที่ขึ้นต้นด้วย4
(สี่) และ9
(เก้า)
คำแนะนำอย่างเป็นทางการของคำศัพท์สำหรับ PronunciationSort ™คือ:
- แปด
- ห้า
- สี่
- ลบ
- เก้า
- หนึ่ง
- เจ็ด
- หก
- สาม
- สอง
- ศูนย์
นั่นคือ,
8, 5, 4, -, 9, 1, 7, 6, 3, 2, 0
อินพุต
รายการจำนวนเต็มในช่วงที่มีองค์ประกอบมากที่สุด 100 รายการ ไม่อนุญาตให้ป้อนข้อมูลเป็นรายการสตริง หากภาษาของคุณไม่รองรับการป้อนข้อมูลเป็นรายการอนุญาตให้ป้อนเป็นจำนวนเต็มแยกได้
ข้อมูลที่ป้อนจะไม่มีตัวเลขที่ไม่ถูกต้องหรือหมายเลขใด ๆ ที่ขึ้นต้นด้วย 0 (ยกเว้นตัวเลข 0 เอง) การป้อนข้อมูลโดยทั่วไปจะไม่ถูกจัดเรียงก็สามารถได้รับในลำดับใด ๆ
เอาท์พุต
จำนวนเต็มเดียวกันในลำดับ PronunciationSort ™ โปรดทราบว่าตัวเลขควรถูกแปลงเป็นการออกเสียงเพื่อรับการเรียงลำดับเอาต์พุตไม่ควรมีสตริงใด ๆ
ตัวอย่าง
สำหรับตัวอย่างขั้นตอนกลาง (ห่อในวงเล็บ) ทำหน้าที่เป็นแนวทางเท่านั้นและไม่ได้เป็นส่วนหนึ่งของผลลัพธ์
[1, 2, 3] -> (['one', 'two', 'three']) -> [1, 3, 2]
[-1, 0, 1, 2] -> (['minus one', 'zero', 'one', 'two']) -> [-1, 1, 2, 0]
[-100, 45, 96] -> (['minus one zero zero', 'four five', 'nine six']) -> [45, -100, 96]
[11, 12, 13, 134, 135] -> (['one one', 'one two', 'one three', 'one three four', 'one three five']) -> [11, 13, 135, 134, 12]