Terinspirasi oleh pertanyaan Stack Overflow ini: Menyortir daftar: angka dalam naik, huruf dalam turun . Tugas Anda adalah untuk memecahkan masalah berikut ini dan, karena ini adalah kode-golf , Anda harus melakukannya sesedikit mungkin dalam byte.
Anda harus mengambil daftar objek sebagai masukan yang mengandung huruf (bentuk yang wajar: string
, char
, dll) dan angka. Anda kemudian harus mengurutkan angka ke dalam urutan menaik dan huruf ke urutan menurun. Namun, Anda harus menyimpan huruf di posisi huruf dan angka di posisi angka. Misalnya, jika daftar adalah:
[L, D, L, L, D, L]
Daftar keluaran harus dalam bentuk:
[L, D, L, L, D, L]
Bekerja melalui
Memasukkan: ['a', 2, 'b', 1, 'c', 3]
- Sortir angka ke dalam urutan menaik:
[1, 2, 3]
- Urutkan surat ke dalam urutan menurun:
['c', 'b', 'a']
- Bergabunglah dengan mereka kembali tetapi tetap urutannya sama:
['c', 1', 'b', 2, 'a', 3]
Aturan
- Daftar ini hanya akan berisi huruf dan angka.
- Daftarnya mungkin kosong.
- Daftar ini hanya dapat berisi huruf atau hanya digit.
- Jika bahasa Anda tidak mendukung array tipe campuran, Anda dapat menggunakan karakter digit alih-alih angka. Perhatikan bahwa jika bahasa Anda mendukung ini, Anda harus menggunakan jenis campuran.
- Surat hanya akan menjadi
[a-z]
atau[A-Z]
, Anda dapat memilih yang mana. - Surat diurutkan sebagai
a
yang terendah,z
yaitu yang tertinggi yaitua = 1, z = 26
. - Celah standar dilarang.
- I / O dapat dengan sarana standar termasuk sebagai string.
Uji kasus
[5, 'a', 'x', 3, 6, 'b'] -> [3, 'x', 'b', 5, 6, 'a']
[ 3, 2, 1] -> [ 1, 2, 3 ]
[ 'a', 'b', 'c' ] -> [ 'c', 'b', 'a' ]
[] -> []
[ 2, 3, 2, 1 ] -> [1, 2, 2, 3]
Karena ini adalah kode-golf , jawaban terpendek dalam byte menang!