Code-golf programlarını yazarken genellikle bazı sayısal sabitleri kullanırım. Onları her zaman ondalık koydum, çünkü böyle düşünüyorum, ancak dilimin kodumu biraz kısaltmama izin verecek diğer sayı biçimlerini desteklediğini fark ettim.
Meydan okuma
2 ^ 53-1 den küçük negatif olmayan bir tamsayı verildiğinde, tamsayı için aşağıdaki en kısa gösterime sahip olup olmadığına karar verin:
- Ondalık
- onaltılık
- Bilimsel gösterim
Ondalık
Bu, dilimin varsayılan biçimi olduğundan, bu biçim için fazladan bir gösterim yoktur. Her sayı ondalık için her zamanki gibi gösterilir.
onaltılık
Dillerim 0x
onaltılık sabitler için ön eki kullanır . Bu, bir sayının 4 onaltılık basamağı varsa, bu sayıyı temsil etmesi 6 bayt alacağı anlamına gelir.
Bilimsel gösterim
Dilim bilimsel gösterimde aşağıdaki formatı kullanıyor:
[Gerçek baz] e [Tam sayı üssü 10]
Örneğin, 700
olarak temsil edilen 7e3
, ve 699
ile temsil edilir 6.99e3
, çünkü, temel -10 ila 10 arasında olması gerekir (dahil değildir). Bu zorluğun amaçları doğrultusunda, girilen sayı negatif olmadığından taban her zaman en az 0 olacaktır.
Çıktı
Hangi biçimin en kısa olduğunu belirlemenin bir yolunu döndürmelisiniz (örneğin, ondalık için 0, altıgen için 1, bilimsel için 2). Alternatif olarak, sayının kendisinin en küçük gösterimini yazdırabilirsiniz.
Test durumları
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
puanlama
Bu kod golf , yani her dil için en kısa bayttaki cevap kazanıyor.
double
. Sadece bir öneri; uygun gördüğünüzü yapın
1000001000000
ayrıca 1000001e6
sanki yazılmış olabilir .
2^63-1
bazı diller için zor olabilir. Gibi daha düşük bir değere gevşetmeyi düşünün2^32-1
(bu nedenle değerler çift kayan nokta veri tipine uyuyor)