Al escribir programas de código de golf , generalmente termino usando algunas constantes numéricas. Siempre los pongo en decimal porque así es como pienso, pero me di cuenta de que mi idioma admite otros formatos de números que podrían permitirme acortar un poco mi código.
Reto
Dado un entero no negativo menor que 2 ^ 53-1, decida si ese entero tiene la representación más corta en:
- Decimal
- Hexadecimal
- Notación cientifica
Decimal
Dado que este es el formato predeterminado de mi idioma, no se necesita una notación adicional para este formato. Cada número se representa como de costumbre para el decimal.
Hexadecimal
Mis idiomas usan el 0x
prefijo para constantes hexadecimales. Esto significa que si un número tiene 4 dígitos hexadecimales, se necesitarán 6 bytes para representar ese número.
Notación cientifica
Mi lenguaje usa el siguiente formato para notación científica:
[Base real] e [Exponente entero de 10]
Por ejemplo, 700
se representaría como 7e3
, y 699
se representaría como 6.99e3
, porque la base debe estar entre -10 y 10 (no incluido). Para los propósitos de este desafío, la base siempre será al menos 0, ya que el número ingresado no es negativo.
Salida
Debe devolver una forma de identificar qué formato es más corto (es decir, 0 para decimal, 1 para hexadecimal, 2 para científico). Alternativamente, puede generar la representación más pequeña del número mismo.
Casos de prueba
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
Tanteo
Este es el código de golf , por lo que gana la respuesta en los bytes más cortos para cada idioma.
double
. Sólo una sugerencia; Haz lo que quieras
1000001000000
También se puede escribir como 1000001e6
si.
2^63-1
puede ser difícil para algunos idiomas. Considere relajar eso a un valor más bajo como2^32-1
(para que los valores quepan en un tipo de datos de coma flotante doble)