Anda harus menulis program atau fungsi yang mengurutkan daftar bersarang. Berikut adalah aturan untuk menyortir daftar bersarang:
Mari kita ambil daftar ini sebagai contoh:
((5, 2), 2, 7, (2, 1, (3, 4)), 9)
Setiap elemen dalam daftar ini memiliki "prioritas". Elemen dihitung sebagai angka atau sublist. Pertama, dapatkan prioritas setiap elemen pada kedalaman yang sama. Jika suatu elemen hanyalah angka, prioritasnya sama dengan angka itu sendiri. Jika suatu elemen adalah sublist, prioritasnya adalah jumlah dari semua angka di dalamnya, tidak termasuk sub-sub daftar.
Jadi, prioritas semua elemen kedalaman 1 adalah:
( 7 ) 2 7 ( 3 ) 9
((5, 2), 2, 7, (2, 1, (3, 4)), 9)
Urutkan setiap elemen berdasarkan prioritas. Jika ada dasi, Anda harus menjaga urutan yang sama dengan daftar aslinya.
2 ( 3 ) ( 7 ) 7 9
(2, (2, 1, (3, 4)), (5, 2), 7, 9)
Ulangi untuk setiap sublist. Demikian pada sublist ini
(2, 1, (3, 4))
Prioritas kami terlihat seperti:
2 1 ( 7 )
(2, 1, (3, 4))
Jadi disortir, sepertinya:
(1, 2, (3, 4))
(3, 4)
sudah diurutkan, jadi kita sudah selesai. Ulangi untuk (5, 2)
yang menghasilkan (2, 5)
dan kita selesai! Daftar terakhir kami adalah:
(2, (1, 2, (3, 4)), (2, 5), 7, 9)
Aturan:
Sangat meragukan, tetapi untuk berjaga-jaga jika Mathematica memiliki sesuatu untuk ini, tidak ada daftar sortir bawaan yang diizinkan. Fungsi menyortir biasa yang diperbolehkan.
I / O dapat dalam format apa pun yang masuk akal.
Setiap sublist akan berisi setidaknya satu nomor atau daftar. Juga, sublists dapat disarangkan beberapa level. Sebagai contoh, di
(1, 2, (((3))))
dalam(((3)))
memiliki prioritas 0, karena hanya memiliki sublists di dalamnya.Daftar yang tidak valid (tanda kurung yang tidak cocok, non-angka, tipe braket yang salah, angka negatif, dll.) Menghasilkan perilaku yang tidak terdefinisi.
Tes 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))
Jawaban terpendek dalam byte menang.