Pisząc programy do gry w golfa , zwykle używam stałych liczbowych. Zawsze umieszczam je po przecinku, ponieważ tak myślę, ale właśnie zdałem sobie sprawę, że mój język obsługuje inne formaty liczb, które mogą pozwolić mi nieco skrócić kod.
Wyzwanie
Biorąc pod uwagę nieujemną liczbę całkowitą mniejszą niż 2 ^ 53-1, zdecyduj, czy ta liczba całkowita ma najkrótszą reprezentację w:
- Dziesiętny
- Szesnastkowy
- Notacja naukowa
Dziesiętny
Ponieważ jest to domyślny format mojego języka, dla tego formatu nie jest wymagana dodatkowa notacja. Każda liczba jest reprezentowana jak zwykle po przecinku.
Szesnastkowy
Moje języki używają 0x
prefiksu dla stałych szesnastkowych. Oznacza to, że jeśli liczba ma 4 cyfry szesnastkowe, reprezentacja tej liczby zajmie 6 bajtów.
Notacja naukowa
Mój język używa następującego formatu notacji naukowej:
[Podstawa rzeczywista] e [Wykładnik liczby całkowitej 10]
Na przykład 700
byłoby reprezentowane jako 7e3
i 699
byłoby reprezentowane jako 6.99e3
, ponieważ podstawa musi wynosić od -10 do 10 (nie obejmuje). Dla celów tego wyzwania podstawa zawsze będzie wynosić co najmniej 0, ponieważ wprowadzona liczba nie jest ujemna.
Wydajność
Powinieneś zwrócić sposób identyfikacji, który format jest najkrótszy (tj. 0 dla dziesiętnych, 1 dla szesnastkowych, 2 dla naukowych). Alternatywnie możesz wypisać najmniejszą reprezentację samej liczby.
Przypadki testowe
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
Punktacja
To jest golf golfowy , więc wygrywa odpowiedź w najkrótszych bajtach dla każdego języka.
double
. Tylko sugestia; rób, co uważasz za stosowne
1000001000000
można również napisać tak, 1000001e6
jakby.
2^63-1
przypadku niektórych języków wymóg przejścia na wyższy poziom może być trudny. Rozważ złagodzenie tego do niższej wartości, takiej jak2^32-1
(aby wartości pasowały do podwójnego zmiennoprzecinkowego typu danych)