Anda mungkin tahu bahwa level reputasi yang berbeda di Stack Exchange diformat secara berbeda ketika dilihat dari halaman pertanyaan / posting. Sudah ada semua aturan format ulang:
- jika pengguna memiliki 1 hingga 999 (satu hingga tiga digit) rep, itu dibiarkan apa adanya.
- jika pengguna memiliki 1000 hingga 9999 rep (empat digit), ia menerima koma sebagai pemisah:
9,999
jika pengguna memiliki 10.000 hingga 99999 rep (lima digit), itu dipersingkat dan dibulatkan. Yaitu, 16741 rep diformat sebagai
16.7k
, perhatikan pemisah titik tidak seperti koma untuk rep yang lebih rendah (titik sebelumnya).16750 sudah akan menghasilkan
16.8k
(karena ini tampaknya sudah diperbaiki )16941 menghasilkan
16.9k
, 16950 putaran hingga17k
, serta 17014, misalnya.99941 putaran ke
99.9k
, 99950 putaran ke100k
(ini adalah sesuatu yang saya benar-benar benci dengan putaran ulang di SE, karena 100.000 adalah tonggak sejarah, dan 99950 tidak ada di dekat sini).
Jika pengguna memiliki 100000 hingga 999999 rep, itu dibulatkan dengan cara ini:
100100 putaran ke bawah
100k
, 100500 putaran hingga101k
. Masalahnya adalah, pembulatan dilakukan, tetapi bagian desimal dilucuti (tidak seperti rep empat digit).100450 putaran ke bawah
100k
, tidak ada langkah ke putaran 450 hingga 500. Juga tidak 100499 - itu masih100k
.279843 putaran hingga
280k
, dan 399999 putaran hingga400k
.
Sebagai input, Anda diberikan reputasi mentah, dan output sebagai diformat.
Anda dapat mempertimbangkan bahwa input tidak akan menerima angka / non-angka yang tidak valid, atau angka dengan nol awal, yaitu 0001234
.
Karena Jon Skeet tampaknya tidak akan mencapai 1.000.000 segera, kode Anda harus sesingkat mungkin sehingga Anda tidak perlu menangani perwakilan lebih dari satu juta (yaitu, tidak ada kasing khusus untuk 999500 atau lebih).
.
titik desimal dan dengan akhirank
; tunduk pada peringatan bahwa jika angka signifikan ketiga adalah0
dan di sebelah kanan titik desimal maka nilainya ditampilkan hanya untuk 2 angka signifikan. "Cutoff spesifik kemudian dapat dipindahkan ke satu daftar tes kasus di akhir posting, yang lebih nyaman untuk copy-paste ke dalam kerangka uji.Jawaban:
Japt,
5048 bytePercobaan pertama; mungkin ada metode yang lebih baik.
Cobalah online!
Bagaimana itu bekerja
sumber
JavaScript (ES6),
7668 byteUpaya pertama lainnya. Syukurlah untuk yang praktis
.toLocaleString()
, alternatif terpendek yang bisa saya temukan adalah 21 byte lebih lama ...Ini memisahkan ribuan dengan salah satu
,
atau.
, tergantung pada negara tempat Anda tinggal. Untuklimadua byte lebih, Anda dapat membuatnya selalu menggunakan koma:sumber
JavaScript (ES6), 71
Mengalahkan @ETHProductions sementara dia tidak melihat petunjuk saya.Dia melihatnya.Uji
Uji
sumber
ES6,
6862 byteSunting: Disimpan 6 byte ketika saya menyadari bahwa
["1", "001"]
stringify to"1,001"
.Sunting: Disimpan 2 byte untuk memperbaiki komentar @ Mwr247!
sumber
16950
memberi16.9k
bukannya17k
Python 2.7, 58 byte
Saya harus menggunakan
(x+.5)
untuk menangani16950->17k
kasus ini ..sumber