파이 전용으로 이미 30 개의 도전 과제가 있지만 n 번째 10 진수를 찾도록 요구하는 것은 하나도 없습니다.
도전
0 <= n <= 10000
표시 범위의 정수에 대해서는 pi의 n 번째 10 진수입니다.
규칙
- 소수점 이하 자릿수
3.
- 프로그램이 기능이거나 전체 프로그램 일 수 있습니다.
- 10 진법으로 결과를 출력해야합니다
- 당신은 얻을 수
n
있지만 하드 코딩되지 않은 적합한 입력 방법 (함수 매개 변수가 … 표준 입력, 입력 ())에서 - 선택한 언어에 고유 한 1 기반 색인 작성을 사용할 수 있습니다.
- 유효하지 않은 입력 (
n == -1
,n == 'a'
또는n == 1.5
) 을 처리 할 필요가 없습니다. - 최소 10k 이하의 소수점 을 지원하는 경우 내장이 허용됩니다.
- 가장 짧은 코드가 아니라 가장 짧은 코드이므로 런타임은 중요하지 않습니다.
- 이것은 바이트 단위의 code-golf , 가장 짧은 코드입니다.
테스트 사례
f(0) == 1
f(1) == 4 // for 1-indexed languages f(1) == 1
f(2) == 1 // for 1-indexed languages f(2) == 4
f(3) == 5
f(10) == 8
f(100) == 8
f(599) == 2
f(760) == 4
f(1000) == 3
f(10000) == 5
참고로, 여기 에 pi의 첫 100k 자리가 있습니다.
답변
05AB1E, 3 바이트
žs¤
설명
žs # push pi to N digits
¤ # get last digit
1 기반 인덱싱을 사용합니다.
최대 100k 자릿수를 지원합니다.
답변
파이썬 2, 66 바이트
n=input()+9
x=p=5L**7
while~-p:x=p/2*x/p+10**n;p-=2
print`x/5`[-9]
입력은 stdin에서 가져옵니다.
샘플 사용법
$ echo 10 | python pi-nth.py
8
$ echo 100 | python pi-nth.py
8
$ echo 1000 | python pi-nth.py
3
$ echo 10000 | python pi-nth.py
5
답변
Bash + coreutils, 60 49 바이트
echo "scale=10100;4*a(1)"|bc -l|tr -d '\\\n'|cut -c$(($1+2))
bc -l<<<"scale=$1+9;4*a(1)-3"|tr -dc 0-9|cut -c$1
Dennis가 개선했습니다 . 감사!
인덱스는 1부터 시작합니다.
답변
파이썬 2, 73 71 73 바이트
내 점수를 2 바이트 늘리는 @aditsu 덕분에
마지막으로 2 초 안에 완료 될 수있는 알고리즘.
n=10**10010
a=p=2*n
i=1
while a:a=a*i/(2*i+1);p+=a;i+=1
lambda n:`p`[n+1]
테일러 시리즈를 사용하여 pi = 4*arctan(1)
계산 arctan(1)
하는 동안 수식 을 사용합니다 .
답변
MATL, 11 10 바이트
@Luis 덕분에 1 바이트 절약
YPiEY$GH+)
이 솔루션은 1 기반 인덱싱을 사용합니다.
설명
YP % Pre-defined literal for pi
iE % Grab the input and multiply by 2 (to ensure we have enough digits to work with)
Y$ % Compute the first (iE) digits of pi and return as a string
G % Grab the input again
H+ % Add 2 (to account for '3.') in the string
) % And get the digit at that location
% Implicitly display the result
답변
Mathematica 30 바이트
RealDigits[Pi,10,1,-#][[1,1]]&
f=%
f@0
f@1
f@2
f@3
f@10
f@100
f@599
f@760
f@1000
f@10000
1
4
1
5
8
8
2
4
3
5
답변
세이지, 32 25 바이트
lambda d:`n(pi,9^5)`[d+2]
이런 종류의 언어로 내 첫 대답.
n
pi
17775 자리로 반올림 합니다.