Latar Belakang
Dalam C, ada fungsi untuk argumen command-line membantu parse: getopt.
Getopt mengambil jumlah argumen ( argc), daftar argumen ( argv), dan string yang mewakili opsi yang harus diambil oleh program (optstring ).
String pilihan (optstring ) adalah serangkaian karakter opsi yang masing-masing diikuti oleh satu titik dua (untuk opsi yang membutuhkan argumen), dua titik dua (untuk opsi dengan argumen opsional), atau nol titik dua (untuk opsi tanpa argumen).
Sebagai contoh: seseorang dapat menggunakan string opsi berikut untuk widget baru perusahaan mereka.
"v::x:hy:S:G::dns:f::"
Tapi itu terlihat mengerikan! Pilihannya semua dicampur bersama! String opsi ini akan terlihat jauh lebih baik jika diurutkan:
"f::G::v::S:s:x:y:dhn"
Spesifikasi
Input akan berupa string yang cocok dengan ekspresi reguler
([A-Za-z]:{0,2})+Anda harus mengambil input sebagai string atau daftar karakter.
Anda harus menampilkan string yang diurutkan dengan metode yang dirinci di bawah ini.
Anda tidak perlu menangani input kosong.
Anda tidak perlu menangani input dengan opsi berulang dari jenis yang sama (
"aa"tidak valid, tetapi"aa:a::"valid).
Metode Penyortiran
Dalam string opsi yang diurutkan:
Karakter diikuti oleh dua titik dua didahulukan, disortir berdasarkan abjad, dengan huruf besar sebelum huruf kecil masing-masing (yaitu "aBb", bukan "Bab").
Kemudian adalah karakter dengan satu titik dua, diurutkan berdasarkan abjad, dengan huruf besar sebelum huruf kecil masing-masing.
Terakhir adalah karakter tanpa titik dua, diurutkan berdasarkan abjad, dengan huruf besar sebelum huruf kecil masing-masing.
Aturan
- Celah Standar dilarang.
Mencetak gol
Ini adalah kode-golf , jadi jawaban terpendek dalam byte di setiap bahasa akan menang.
Contohnya
# "input" => "output"
"v::x:hy:S:G::dns:f::" => "f::G::v::S:s:x:y:dhn"
"aa:a::" => "a::a:a"
"B:" => "B:"
"Confusio:n::" => "n::o:Cfinosu"
"Confusio:n:" => "n:o:Cfinosu"
"m:qW:X:xc:vViI" => "c:m:W:X:IiqVvx"
"V:omo:V" => "o:V:moV"
"agg:ra:va::ting::" => "a::g::a:g:aginrtv"
"input" => "inptu"
Kasing panjang (312 karakter)
Input Tidak Valid (Anda tidak harus menangani):
"gg" (duplicated option)
"" (empty string)
":w:" (first colon isn't after a character)
"x:y:0:fhn" ('0' is not alphabetic)
"A:::" (3 colons is invalid)
agg:ra:va::ting::Hancurkan milikku heh ... Ironis.