Terinspirasi oleh sorting-a-number-digit-digit-tanpa-menggunakan-an-array , tapi saya pikir itu membuat kode golf yang lebih baik daripada pertanyaan SO.
Diberikan bilangan bulat positif, urutkan digit dalam bilangan bulat itu.
Menang skor terendah!
- Mulai dengan 0 poin.
- Tambahkan satu titik per karakter.
- Tambahkan 20 poin untuk setiap larik yang Anda gunakan.
- Tambahkan 10 poin untuk setiap string multi-karakter dalam kode Anda. (Kecuali input awal selama itu dikonversi ke integer tanpa operasi lain yang dilakukan di dalamnya.)
- Tambahkan 32 poin jika jumlah digit maksimum yang dapat ditangani oleh program Anda dibatasi oleh program Anda (sebagai lawan dari mesin).
- Kurangi 10 poin jika kode Anda dapat mengubah arah pengurutan yang diberikan argumen lain (apa pun yang Anda inginkan, tetapi misalnya 0 untuk pengurutan menurun dan 1 untuk pengurasan.)
Setiap bahasa berbeda, tetapi idenya adalah untuk menghindari segala jenis peretasan yang berulang-ulang.
Contoh:
Input : 52146729
Output : 97654221 atau 12245679
Catatan:
- Gunakan kemampuan penyortiran bawaan yang disediakan oleh bahasa pemrograman Anda, tetapi jika fitur semacam itu melibatkan string atau array, ambil penalti!
- Anda bisa menulis solusi sebagai fungsi yang mengambil integer secara langsung, atau sebagai program yang mengambil argumen dari argv, file atau stream dan mengubahnya menjadi integer. Selama Anda mengonversinya menjadi integer segera dan membuang input char * asli tanpa melakukan operasi lebih lanjut padanya, tidak ada penalti yang berlaku.
- Hukuman tidak hanya berlaku untuk string literal dalam teks program Anda, tetapi bagian mana pun dari fitur program Anda yang dapat menginput atau menghasilkan string atau dapat diubah. Misalnya, JavaScript
String.prototype.split
memiliki setidaknya satu string sebagai input (this
) dan Array sebagai output, jadi +30 untuk menggunakannya. - Saya sudah mencoba membuat aturan ini memandu prinsip desain algoritma, bukan inisial / akhir I / O (karenanya catatan # 2). Saya tidak berpikir hukuman harus diterapkan
int(input())
bahkan jikainput
tanda tangan mengatakan itu mengembalikan string, selama ungkapan itu adalah titik awal masuknya program. Demikian juga, jika hasil akhir dari program adalahprint(x)
danx
harus berupa string, penalti tidak berlaku untuk operasi casting string parit terakhir. Semua yang dikatakan, saya secara eksplisit tidak pernah mengatakan bahwa ini harus menjadi program atau dari mana I / O harus datang atau pergi. Fungsi yang mengambilint
dan mengembalikanint
akan berfungsi, dan tidak akan menderita dari ambiguitas ini.
" "
dihitung sebagai string multi karakter? Satu karakter tidak akan dianggap sebagai "multi" ...