Beim Schreiben von Code-Golf- Programmen verwende ich normalerweise einige numerische Konstanten. Ich habe sie immer in Dezimalzahlen angegeben, weil ich so denke, aber ich habe gerade festgestellt, dass meine Sprache andere Zahlenformate unterstützt, mit denen ich meinen Code möglicherweise leicht verkürzen kann.
Herausforderung
Entscheiden Sie bei einer nicht-negativen Ganzzahl von weniger als 2 ^ 53-1, ob diese Ganzzahl die kürzeste Darstellung hat in:
- Dezimal
- Hexadezimal
- Wissenschaftliche Schreibweise
Dezimal
Da dies das Standardformat meiner Sprache ist, ist für dieses Format keine zusätzliche Notation erforderlich. Jede Zahl wird wie gewohnt als Dezimalzahl dargestellt.
Hexadezimal
Meine Sprachen verwenden das 0x
Präfix für hexadezimale Konstanten. Das heißt, wenn eine Zahl 4 hexadezimale Stellen hat, werden 6 Bytes benötigt, um diese Zahl darzustellen.
Wissenschaftliche Schreibweise
Meine Sprache verwendet das folgende Format für die wissenschaftliche Notation:
[Reale Basis] e [Integer-Exponent von 10]
Beispielsweise 700
würde dargestellt werden als 7e3
, und 699
würde dargestellt werden als 6.99e3
, weil die Basis zwischen -10 und 10 liegen muss (nicht inklusive). Für die Zwecke dieser Abfrage ist die Basis immer mindestens 0, da die eingegebene Zahl nicht negativ ist.
Ausgabe
Sie sollten einen Weg zurückgeben, um zu identifizieren, welches Format am kürzesten ist (dh 0 für Dezimalzahl, 1 für Hexadezimalzahl, 2 für Wissenschaftlichkeit). Alternativ können Sie die kleinste Darstellung der Zahl selbst ausgeben.
Testfälle
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
Wertung
Das ist Code-Golf , also gewinnt die Antwort in den kürzesten Bytes für jede Sprache.
double
. Nur ein Vorschlag; tun, was Sie für richtig halten
1000001000000
kann auch so geschrieben werden 1000001e6
.
2^63-1
Für einige Sprachen kann es schwierig sein, die Anforderungen zu erfüllen . Ziehen Sie in Betracht, dies auf einen niedrigeren Wert zu reduzieren, z. B.2^32-1
(damit die Werte in einen doppelten Gleitkomma-Datentyp passen)