코드 골프 프로그램을 작성할 때 일반적으로 숫자 상수를 사용합니다. 나는 항상 그렇게 생각하기 때문에 10 진수로 넣었습니다. 그러나 언어가 코드를 약간 단축시킬 수있는 다른 숫자 형식을 지원한다는 것을 깨달았습니다.
도전
음수가 아닌 정수가 2 ^ 53-1보다 작은 경우 다음에서 정수가 가장 짧은 표현인지 여부를 결정하십시오.
- 소수
- 16 진수
- 과학적 표기법
소수
이것이 내 언어의 기본 형식이므로이 형식에 대한 추가 표기법이 필요하지 않습니다. 모든 숫자는 평소와 같이 10 진수로 표시됩니다.
16 진수
내 언어는 0x
16 진 상수에 접두사를 사용합니다 . 즉, 숫자에 4 개의 16 진수가있는 경우 해당 숫자를 나타내는 데 6 바이트가 필요합니다.
과학적 표기법
내 언어는 과학 표기법에 다음 형식을 사용합니다.
[실수] e [정수 지수 10]
예를 들어, 700
같은 표현 될 것입니다 7e3
, 그리고 699
로 표현 될 수 6.99e3
있기 때문에, 기본 -10과 10 사이 여야합니다 (비 포함). 입력 된 숫자가 음수가 아니기 때문에이 문제를 해결하기 위해 기준은 항상 0 이상입니다.
산출
가장 짧은 형식을 식별하는 방법을 반환해야합니다 (예 : 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
(더블 부동 소수점 데이터 유형에 맞는 값)과 같은 낮은 값으로 완화하는 것을 고려하십시오.