Diberikan daftar string, urutkan daftar sebagai angka tanpa mengetahui basis apa yang digunakan. Nilai digit juga tidak diketahui (mungkin saja '1'
>'2'
).
Karena nilai digit tidak diketahui, gunakan Hukum Benford (atau Hukum Digit Pertama) untuk menentukan nilai relatif digit tersebut. Untuk distribusi yang mengikuti Hukum Benford, digit bernilai rendah muncul sebagai digit utama lebih sering daripada digit bernilai tinggi.
Aturan
- Ini adalah kode-golf
- Daftar string dapat berasal dari sumber yang Anda pilih (stdin, variabel, file, pengguna, dll.)
- String terbatas pada karakter ASCII.
- Karakter yang tidak muncul sebagai karakter utama memiliki nilai tertinggi. (anggap tidak ada nol, dan urutkan secara ketat berdasarkan frekuensi yang dipimpin.)
- Karakter yang muncul sebagai angka di depan sama dengan jumlah kali karakter lainnya.
Contoh
Tidak disortir
['c','ca','ac','cc','a','ccc','cx','cz','cy']
Diurutkan
['c','a','cc','ca','cz','cy','cx','ac','ccc']
Catatan: Dalam contoh ini, 'cz'
, 'cy'
dan 'cx'
dapat muncul sebagai 5, 6 dan elemen-7 di urutan sejak digit 'x'
, 'y'
dan 'z'
sama-sama berbobot.
Jawaban:
Python, 59
108112Input diberikan sebagai daftar
a
, dan ungkapan ini menghasilkan daftar yang diurutkan (+2 karakter untuk ditetapkan ke variabel). Ini mengurutkan daftar secara terbalik dengan panjang dinegasikan dan kemudian oleh frekuensi.sumber
zip
denganNone
. Meskipun tidak berfungsi di Python 3 yang akan digunakanitertools.zip_longest
.None
tidak dapat dibandingkan dengan bilangan bulat di Python 3, jadi itu akan gagal juga.fillvalue
harus diatur ke sesuatu yang kurang dari nilai terkecil.Ruby, 65
Mengurutkan secara leksikografis pada ukuran string, lalu frekuensi masing-masing karakter bukan digit terdepan.
sumber
Jawa (261)
Metode mengambil array string, dan mengurutkan array di tempatnya. Tidak ada yang mewah tentang implementasinya, tetapi ia menggunakan ekspresi lambda yang ditambahkan ke Java 8.
sumber
Javascript (E6) 147
Membatasi
Nilai frekuensi hingga 1000000000: untuk pengurutan, nilai frekuensi digabungkan dalam string yang besar
Tidak disatukan
Sidenote
X-~
bertambah 1 bahkan jika angka asli X tidak terdefinisi atau NaNPemakaian
Keluaran:
["c", "a", "cc", "ca", "cx", "cz", "cy", "ac", "ccc"]
sumber