在编写代码高尔夫球程序时,我通常最终会使用一些数字常量。我总是将它们放在十进制中,因为这就是我的想法,但是我只是意识到我的语言支持其他数字格式,这可能会使我略微缩短代码。
挑战
给定一个小于2 ^ 53-1的非负整数,请确定该整数是否具有以下最短表示形式:
- 小数
- 十六进制
- 科学计数法
小数
由于这是我的语言的默认格式,因此该格式无需额外的注释。每个数字都照常表示为十进制。
十六进制
我的语言将0x
前缀用于十六进制常量。这意味着,如果一个数字有4个十六进制数字,则将需要6个字节来表示该数字。
科学计数法
我的语言使用以下格式表示科学符号:
[Real base] e [10的整数指数]
例如,700
将被表示为7e3
,并且699
将被表示为6.99e3
,因为基数必须在-10到10之间(不包括在内)。出于此挑战的目的,因为输入的数字为非负数,所以基数始终将始终至少为0。
输出量
您应该返回一种识别最短格式的方法(即,十进制为0,十六进制为1,科学格式为2)。或者,您可以输出数字本身的最小表示形式。
测试用例
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
计分
这是代码高尔夫球,因此每种语言的答案以最短字节为准。
double
。只是一个建议;做你认为合适的
1000001000000
也可以写成1000001e6
虽然。
2^63-1
对于某些语言,可能难以达到要求。考虑将其放宽到较低的值,例如2^32-1
(这样的值适合双浮点数据类型)