При написании кода-гольфа программ я обычно использую некоторые числовые константы. Я всегда помещаю их в десятичную дробь, потому что я так думаю, но я только что понял, что мой язык поддерживает другие числовые форматы, которые могут позволить мне немного сократить код.
Вызов
Если неотрицательное целое число меньше 2 ^ 53-1, решите, имеет ли это целое кратчайшее представление в:
- Десятичный
- шестнадцатеричный
- Научная нотация
Десятичный
Поскольку это формат по умолчанию для моего языка, для этого формата не требуется никаких дополнительных обозначений. Каждое число представляется как обычно для десятичного числа.
шестнадцатеричный
Мои языки используют 0x
префикс для шестнадцатеричных констант. Это означает, что если число имеет 4 шестнадцатеричных цифры, для представления этого числа потребуется 6 байтов.
Научная нотация
Мой язык использует следующий формат для научной нотации:
[Действительная база] 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
(чтобы значения соответствовали типу данных с двойной плавающей запятой)