Khi viết chương trình golf-code , tôi thường kết thúc bằng cách sử dụng một số hằng số. Tôi luôn đặt chúng ở dạng thập phân vì đó là cách tôi nghĩ, nhưng tôi chỉ nhận ra rằng ngôn ngữ của tôi hỗ trợ các định dạng số khác có thể giúp tôi rút ngắn mã của mình một chút.
Thử thách
Cho một số nguyên không âm nhỏ hơn 2 ^ 53-1, hãy quyết định xem số nguyên đó có biểu diễn ngắn nhất trong:
- Số thập phân
- Hệ thập lục phân
- Ký hiệu khoa học
Số thập phân
Vì đây là định dạng mặc định của ngôn ngữ của tôi, nên không cần thêm ký hiệu nào cho định dạng này. Mỗi số được biểu diễn như bình thường cho số thập phân.
Hệ thập lục phân
Ngôn ngữ của tôi sử dụng 0x
tiền tố cho hằng số thập lục phân. Điều này có nghĩa là nếu một số có 4 chữ số thập lục phân, nó sẽ mất 6 byte để biểu thị số đó.
Ký hiệu khoa học
Ngôn ngữ của tôi sử dụng định dạng sau cho ký hiệu khoa học:
[Cơ sở thực] e [Số nguyên của 10]
Ví dụ, 700
sẽ được biểu diễn dưới dạng 7e3
và 699
sẽ được biểu diễn dưới dạng 6.99e3
, vì cơ sở phải nằm trong khoảng từ -10 đến 10 (không bao gồm). Đối với mục đích của thử thách này, cơ sở sẽ luôn có ít nhất là 0, vì số được nhập là không âm.
Đầu ra
Bạn nên trả về cách xác định định dạng nào ngắn nhất (nghĩa là 0 cho số thập phân, 1 cho hex, 2 cho khoa học). Ngoài ra, bạn có thể xuất đại diện nhỏ nhất của chính số đó.
Các trường hợp thử nghiệm
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
Chấm điểm
Đây là môn đánh gôn , vì vậy câu trả lời bằng byte ngắn nhất cho mỗi ngôn ngữ sẽ thắng.
double
. Chỉ là một gợi ý; làm như bạn thấy phù hợp
1000001000000
cũng có thể được viết như 1000001e6
thể.
2^63-1
có thể khó khăn đối với một số ngôn ngữ. Cân nhắc việc thư giãn với giá trị thấp hơn như2^32-1
(vì vậy các giá trị phù hợp với kiểu dữ liệu dấu phẩy động kép)