Saat menulis program kode-golf , saya biasanya menggunakan konstanta numerik. Saya selalu meletakkannya dalam desimal karena itulah yang saya pikirkan, tetapi saya baru menyadari bahwa bahasa saya mendukung format angka lain yang mungkin mempersingkat kode saya.
Tantangan
Dengan bilangan bulat non-negatif kurang dari 2 ^ 53-1, putuskan apakah bilangan bulat itu memiliki representasi terpendek di:
- Desimal
- Heksadesimal
- Notasi ilmiah
Desimal
Karena ini adalah format default bahasa saya, tidak ada notasi tambahan yang diperlukan untuk format ini. Setiap angka direpresentasikan seperti biasa untuk desimal.
Heksadesimal
Bahasa saya menggunakan 0x
awalan untuk konstanta heksadesimal. Ini berarti bahwa jika suatu angka memiliki 4 digit heksadesimal, dibutuhkan 6 byte untuk merepresentasikan angka tersebut.
Notasi ilmiah
Bahasa saya menggunakan format berikut untuk notasi ilmiah:
[Basis nyata] e [Eksponen integer 10]
Sebagai contoh, 700
akan direpresentasikan sebagai 7e3
, dan 699
akan direpresentasikan sebagai 6.99e3
, karena basis harus antara -10 dan 10 (tidak inklusif). Untuk keperluan tantangan ini, pangkalan akan selalu setidaknya 0, karena angka yang dimasukkan adalah non-negatif.
Keluaran
Anda harus mengembalikan cara mengidentifikasi format mana yang terpendek (yaitu 0 untuk desimal, 1 untuk hex, 2 untuk ilmiah). Atau, Anda dapat menampilkan representasi terkecil dari nomor itu sendiri.
Uji kasus
Decimal | Hexadecimal | Scientific | Winner
--------------|--------------|-------------------|-------------
0 | 0x0 | 0e0 | Decimal
15 | 0xF | 1.5e1 | Decimal
6999 | 0x1B57 | 6.999e3 | Decimal
7000 | 0x1B58 | 7e3 | Scientific
1000000000000 | 0xE8D4A51000 | 1e12 | Scientific
1000000000001 | 0xE8D4A51001 | 1.000000000001e12 | Hexadecimal
1000000001000 | 0xE8D4A513E8 | 1.000000001e12 | Hexadecimal
1000001000000 | 0xE8D4B45240 | 1.000001e12 | Scientific
Mencetak gol
Ini adalah kode-golf , jadi jawabannya dalam byte terpendek untuk setiap bahasa menang.
double
. Hanya sebuah saran; lakukan sesuai keinginan Anda
1000001000000
bisa juga ditulis seolah- 1000001e6
olah.
2^63-1
mungkin sulit untuk beberapa bahasa. Pertimbangkan untuk mengendurkannya ke nilai yang lebih rendah seperti2^32-1
(sehingga nilainya sesuai dengan tipe data floating point ganda)