정의
연결된 자연수의 무한 행이 있습니다 (양의 정수, 1로 시작) :
1234567891011121314151617181920212223...
도전
- 위치 번호를 입력으로 받아들이고 위에 정의 된 행에서 해당 위치의 숫자를 출력하는 모든 언어로 프로그램을 작성하십시오.
- 위치 번호는 임의의 크기 양의 정수입니다. 첫 번째 위치는 1이며 출력 숫자는 '1'입니다.
- 입력은 10 진수 (예 : 13498573249827349823740000191)이거나 양의 정수에 해당하는 e- 표기 (예 : 1.2e789)입니다.
- 입력으로 매우 큰 인덱스 (예 : 1e123456-1은 123456 0) 인 경우 프로그램은 합리적인 시간 (현대 PC / Mac에서 10 초)으로 종료해야합니다. 따라서 간단한 반복 루프는 허용되지 않습니다.
- 유효하지 않은 입력이 주어지면 프로그램은 1 초 안에 오류와 함께 종료되어야합니다. 예 : 1.23e (잘못된) 또는 1.23e1 (12.3과 같음-정수 아님)
- 공개 BigNum 라이브러리를 사용하여 숫자를 구문 분석 / 저장하고 간단한 수학적 연산 (+-* / exp)을 수행해도됩니다. 바이트 페널티가 적용되지 않습니다.
- 가장 짧은 코드가 승리합니다.
TL; DR
- 입력 : bignum integer
- 출력 : 무한 행의 해당 위치에있는 숫자
123456789101112131415...
일부 합격 시험 사례
"입력 : 출력"표기법. 그들 모두는 통과해야합니다.
- 1 : 1
- 999 : 9
- 10000000 : 7
- 1e7 : 7 (위의 행과 동일)
- 13498573249827349823740000191 : 6
- 1.1e10001 : 5
- 1e23456 : 5
- 1.23456e123456 : 4
- 1e1000000 : 0
- 1.23e : 오류 (유효하지 않은 구문)
- 0 : 오류 (범위를 벗어남)
- 1.23e1 : 오류 (정수가 아님)
보너스!
숫자 안의 숫자 위치 번호를 출력하고 숫자 자체를 출력합니다. 예를 들면 다음과 같습니다.
13498573249827349823740000191: 6 24 504062383738461516105596714
- 숫자 '50406238373846151610559 6 714' 의 위치 24에서 숫자 ' 6 '입니다.
1e1000000: 0 61111 1000006111141666819445...933335777790000
- 999995 자리 긴 숫자의 61111 위치에있는 숫자 '0'은 여기에 포함하지 않습니다.
보너스 작업을 수행하면 코드 크기에 0.75를 곱하십시오.
신용
이 작업은 2012 년에 많은 수의 요구 사항없이 devclub.eu 모임 중 하나에서 이루어졌습니다. 따라서 제출 된 대부분의 답변은 사소한 루프였습니다.
즐기세요!
1.23456e123456
임의의 입력을 처리하기위한 요구 사항은 이러한 값을 기본적으로 처리 할 수없는 언어를 처벌하고 해당 과제에 접하는 문자열 처리를 수행하도록 요구합니다.