คุณต้องเขียนโปรแกรมหรือฟังก์ชั่นที่เรียงลำดับรายการซ้อนกัน นี่คือกฎสำหรับการเรียงลำดับรายการซ้อนกัน:
ลองทำรายการนี้เป็นตัวอย่าง:
((5, 2), 2, 7, (2, 1, (3, 4)), 9)
แต่ละองค์ประกอบในรายการนี้มี "ลำดับความสำคัญ" องค์ประกอบนับเป็นตัวเลขหรือรายการย่อย ขั้นแรกรับลำดับความสำคัญของแต่ละองค์ประกอบที่ความลึกเท่ากัน หากองค์ประกอบเป็นเพียงตัวเลขลำดับความสำคัญของมันจะเหมือนกับตัวเอง หากองค์ประกอบเป็นรายการย่อยลำดับความสำคัญของมันคือผลรวมของตัวเลขทั้งหมดในนั้นไม่รวมรายการย่อยใด ๆ
ดังนั้นลำดับความสำคัญขององค์ประกอบทั้งหมดของความลึก1คือ:
( 7 ) 2 7 ( 3 ) 9
((5, 2), 2, 7, (2, 1, (3, 4)), 9)
จัดเรียงแต่ละองค์ประกอบตามลำดับความสำคัญ หากมีการเสมอกันคุณจะต้องรักษาลำดับเดียวกันกับรายการเดิม
2 ( 3 ) ( 7 ) 7 9
(2, (2, 1, (3, 4)), (5, 2), 7, 9)
ทำซ้ำสำหรับทุกรายการย่อย ดังนั้นในรายการย่อยนี้
(2, 1, (3, 4))
ลำดับความสำคัญของเราดูเหมือนว่า:
2 1 ( 7 )
(2, 1, (3, 4))
เรียงลำดับแล้วดูเหมือนว่า:
(1, 2, (3, 4))
(3, 4)
เรียงแล้วดังนั้นเราเสร็จแล้ว ทำซ้ำเพื่อให้ได้(5, 2)
ผลลัพธ์(2, 5)
และเราจะเสร็จสิ้น! รายการสุดท้ายของเราคือ:
(2, (1, 2, (3, 4)), (2, 5), 7, 9)
กฎ:
น่าสงสัยอย่างมาก แต่ในกรณีที่ Mathematica มีบางอย่างสำหรับสิ่งนี้ไม่อนุญาตให้สร้างการเรียงลำดับรายการซ้อนกัน ฟังก์ชั่นการเรียงลำดับปกติจะได้รับอนุญาต
I / O สามารถอยู่ในรูปแบบที่เหมาะสม
ทุกรายการย่อยจะมีหมายเลขหรือรายการอย่างน้อยหนึ่งรายการ นอกจากนี้รายการย่อยสามารถซ้อนหลายระดับได้ ยกตัวอย่างเช่นในมีลำดับความสำคัญของ 0, เพราะมันมีรายการย่อยเฉพาะในมัน
(1, 2, (((3))))
(((3)))
รายการที่ไม่ถูกต้อง (วงเล็บที่ไม่ตรงกัน, ที่ไม่ใช่ตัวเลข, ประเภทของวงเล็บที่ไม่ถูกต้อง, จำนวนลบ, ฯลฯ ) ส่งผลให้เกิดพฤติกรรมที่ไม่ได้กำหนด
ทดสอบ I / O:
(1, 2, 3) ---> (1, 2, 3)
(1, 2, 6, 3, 9, 8) ---> (1, 2, 3, 6, 8, 9)
(4, 3, (2), (1)) ---> ((1), (2), 3, 4)
(4, 3, (2), ((1))) ---> (((1)), (2), 3, 4)
(5, (1, 2, (9, 8))) ---> ((1, 2, (8, 9)), 5)
(3, (1, 2), (2, 1)) ---> (3, (1, 2), (1, 2))
(3, (1, 2, (99)), (2, 1, (34))) ---> (3, (1, 2, (99)), (1, 2, (34)))
(7, 2, (1, (9, 12)), (4, 3, 2, (1, 2))) ---> ((1, (9, 12)), 2, 7, (2, 3, (1, 2), 4))
คำตอบที่สั้นที่สุดในการชนะไบต์