Seperti yang dijelaskan dalam pertanyaan ini :
Dropsort, dirancang oleh David Morgan-Mar, adalah contoh dari "algoritma penyortiran" waktu-linear yang menghasilkan daftar yang, pada kenyataannya, diurutkan, tetapi hanya berisi beberapa elemen asli. Elemen apa pun yang tidak paling tidak sebesar maksimum elemen sebelumnya hanya dihapus dari daftar dan dibuang.
Untuk menggunakan salah satu dari kasus uji mereka, input dari {1, 2, 5, 4, 3, 7}
hasil {1, 2, 5, 7}
, karena 4
dan 3
keduanya dijatuhkan karena lebih kecil dari nilai "diurutkan" sebelumnya 5
,.
Kami tidak ingin algoritma "pengurutan", kami ingin mereka menjadi yang sebenarnya. Oleh karena itu, saya ingin Anda menulis sebuah program yang, mengingat daftar angka, mengeluarkan daftar daftar DropSorted (untuk menjadi algoritma penyortiran lengkap, kita perlu menggabungkan daftar ini, tetapi menggabungkan dua daftar yang diurutkan telah dilakukan sebelumnya, dan meminta Anda melakukannya lagi cukup banyak mengajukan dua pertanyaan, jadi pertanyaan ini secara khusus merupakan langkah "pemecahan" dari DropSort lengkap kami).
Pengaturan dan konten daftar kami sangat penting. Output dari program Anda harus setara dengan output DropSort, diikuti oleh DropSort dari nilai yang dibuang, dan seterusnya hingga Anda hanya memiliki daftar rantai yang diurutkan. Sekali lagi, meminjam suite tes yang ada (dan menambahkan dua lagi):
Input -> Output
{1, 2, 5, 4, 3, 7} -> {{1, 2, 5, 7}, {4}, {3}}
{10, -1, 12} -> {{10, 12}, {-1}}
{-7, -8, -5, 0, -1, 1} -> {{-7, -5, 0, 1}, {-8, -1}}
{9, 8, 7, 6, 5} -> {{9}, {8}, {7}, {6}, {5}}
{10, 13, 17, 21} -> {{10, 13, 17, 21}}
{10, 10, 10, 9, 10} -> {{10, 10, 10, 10}, {9}} //Note equivalent values aren't dropped
{5, 4, 3, 8, 7, 6} -> {{5, 8}, {4, 7}, {3, 6}}
{0, 2, 5, 4, 0, 7} -> {{0, 2, 5, 7}, {4}, {0}}
Anda dapat menganggap input tidak kosong.
Ini kode-golf , jadi aturan standar berlaku!
{3,4,5,3,4,5,3,4,5}
menghasilkan {{3,4,5,5,5},{3,4,4},{3}}
?
[5, 4, 3, 8, 7, 6] -> [5, 8], [4,3,7,6]
?