コードゴルフプログラムを書くとき、私は通常、いくつかの数値定数を使用することになります。それが私が考える方法だから、私は常にそれらを10進数に入れましたが、私は自分のコードがコードをわずかに短くするかもしれない他の数値形式をサポートしていることに気付きました。
チャレンジ
2 ^ 53-1未満の非負の整数が与えられた場合、その整数が以下で最も短い表現を持つかどうかを決定します。
- 小数
- 16進数
- 科学表記法
小数
これは私の言語のデフォルト形式であるため、この形式に追加の表記法は必要ありません。すべての数値は、通常の10進数で表されます。
16進数
私の言語では、0x
16進定数にプレフィックスを使用しています。これは、数値に4桁の16進数がある場合、その数値を表すのに6バイトかかることを意味します。
科学表記法
私の言語では、科学表記法に次の形式を使用しています。
[実底] e [10の整数指数]
たとえば、700
はとして表され7e3
、ベースは-10〜10(非包括的)でなければならないため、699
として表されます。このチャレンジでは、入力された数値が負でないため、ベースは常に少なくとも0になります。6.99e3
出力
どの形式が最も短いかを識別する方法を返す必要があります(つまり、10進数の場合は0、16進数の場合は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
得点
これはcode-golfであるため、各言語の最短バイトの回答が優先されます。
double
。単なる提案。あなたが適切と思うように行う
1000001000000
のように書くこともでき1000001e6
ます。
2^63-1
一部の言語では、上位への要件が難しい場合があります。などの低い値にすることを緩和検討2^32-1
(値は、倍精度浮動小数点データ型に収まるように)