pi의 n 번째 소수를 구합니다 없습니다. 도전 0 <= n <=

파이 전용으로 이미 30 개의 도전 과제가 있지만 n 번째 10 진수를 찾도록 요구하는 것은 하나도 없습니다.

도전

0 <= n <= 10000표시 범위의 정수에 대해서는 pi의 n 번째 10 진수입니다.

규칙

  • 소수점 이하 자릿수 3.
  • 프로그램이 기능이거나 전체 프로그램 일 수 있습니다.
  • 10 진법으로 결과를 출력해야합니다
  • 당신은 얻을 수 n있지만 하드 코딩되지 않은 적합한 입력 방법 (함수 매개 변수가 … 표준 입력, 입력 ())에서
  • 선택한 언어에 고유 한 1 기반 색인 작성을 사용할 수 있습니다.
  • 유효하지 않은 입력 ( n == -1, n == 'a'또는 n == 1.5) 을 처리 할 필요가 없습니다.
  • 최소 10k 이하의 소수점 을 지원하는 경우 내장이 허용됩니다.
  • 가장 짧은 코드가 아니라 가장 짧은 코드이므로 런타임은 중요하지 않습니다.
  • 이것은 바이트 단위의 , 가장 짧은 코드입니다.

테스트 사례

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]

이런 종류의 언어로 내 첫 대답.

npi17775 자리로 반올림 합니다.