타원의 둘레
도전
원의 원주 ( \$2\pi r\$), 타원 의 원주는 단단 합니다.
준 장축 \$a\$및 반 단축 \$b\$ 타원 (Wikipedia의 아래 이미지 참조)의 둘레를 계산합니다.
정의에 따라 \$0 < b \le a\$입력 값. 출력 값은 \ 이내 여야합니다.$10^{-6}\$ 주어진 테스트 케이스에 대한 예상 답변의 상대 오류.
표준 코드 골프 규칙이 적용됩니다. 바이트 단위의 가장 짧은 코드가 이깁니다.
방식
관련 정보는 Wikipedia 및 MathWorld 에서 찾을 수 있습니다 . \$C\$원주의 값입니다. \$e\$및 \$h\$도우미 값입니다. 마지막 두 개는 Ramanujan의 근사치이며, 첫 번째 (줄이 그어진 것)는 오류 요구 사항을 충족하지 않습니다. 제 근사 식 (식 5)을 거의 (않는 검증 최대 용) \$a=5b\$ (테스트 케이스의 상한이기도하므로 답변에 사용할 수 있습니다).
$$ \require{enclose} \\ \begin{align} e &= \sqrt{1-\frac{b^2}{a^2}} \\ C &= 4aE(e) = 4a\int^{\pi/2}_{0}{\sqrt{1-e^2 \sin^2 \theta} \;d\theta} \tag{1} \\ C &= 2 \pi a \left(1-\sum^{\infty}_{n=1}{\left(\frac{(2n-1)!!}{(2n)!!}\right)^2 \frac{e^{2n}}{2n-1}}\right) \tag{2} \\ h &= \frac{(a-b)^2}{(a+b)^2} \\ C &= \pi (a + b) \left( 1 + \sum^{\infty}_{n=1} { \left( \frac{(2n-1)!!}{2^n n!} \right)^2 \frac{h^n}{(2n-1)^2} } \right) \tag{3} \\ C &= \pi (a + b) \sum^{\infty}_{n=0} { \binom{1/2}{n}^2 h^n } \tag{4} \\ \enclose{horizontalstrike}{C} &\enclose{horizontalstrike}{\approx \pi \left( 3(a+b) - \sqrt{(3a+b)(a+3b)} \right)} \\ C &\approx \pi (a+b) \left( 1+ \frac{3h}{10 + \sqrt{4-3h}} \right) \tag{5} \end{align} $$
테스트 케이스
C (원주)에 대한 모든 값은 1000 개의 항을 포함하는 방정식 4를 사용하여 계산되며 10 개의 유효 숫자로 표시됩니다.
a b C
1 1 6.283185307
1.2 1 6.925791195
1.5 1 7.932719795
2 1 9.688448220
3 1 13.36489322
5 1 21.01004454
20 10 96.88448220
123 45 556.6359936
답변
Wolfram 언어 (Mathematica) , 20 바이트
Perimeter[#~Disk~#]&
온라인으로 시도하십시오!
@Roman에서 -2 바이트 (댓글 참조)
Python 3 , 68 67 바이트
f=lambda a,b,k=2:k>>9or(1-b*b/a/a)*(k-4+3/k)/k*f(a,b,k+2)+6.28319*a
온라인으로 시도하십시오!
\의 충분히 정확한 값이 주어진 정확한 무한 급수$2\pi \approx 6.28319\$및 \$\infty \approx 9\$.
69 68 바이트
f=lambda a,b,k=0:k//7*.785398*a*(8-k)or f(a+b,2*(a*b)**.5,k*b/a/2+4)
온라인으로 시도하십시오!
\의 충분히 정확한 값이 주어진 다른 정확한 시리즈$\frac\pi4 \approx .785398\$및 \$8 \approx 7\$. 이것은 각 테스트 케이스에 대해 5 개의 재귀 호출을 사용하여 매우 빠르게 수렴합니다! 재귀는 불변 값을 정확하게 보존합니다.
$$\left(1 + \frac{kb}{8a}\right)C(a, b) - \frac{kb}{8a}C(a + b, 2\sqrt{a b}),$$
그러면 대략 \$(1 - \frac k8)2\pi a\$때 \$a, b\$ 충분히 가까워집니다.
APL (Dyalog Unicode) , 28 25 23 바이트
-5 바이트에 대한 Bubbler 에게 감사드립니다 !
가정 ⎕IO←0합니다.
f←○1⊥+×9(×⍨*×.5!⍨⊢)∘⍳⍨-÷+
온라인으로 시도하십시오!
이것은 계산
$$ \pi \cdot \sum_{n=0}^{8} (a+b) \cdot \left( h^{\prime n} \binom{1/2}{n} \right) ^2 \qquad h^\prime = {{a-b}\over{a+b}} $$
이것은 4 번째 공식을 사용한 충분히 근사치입니다. 설명을 위해 기능은 두 개로 나뉩니다. f주 함수이며 \를g 계산합니다.$ \left( \alpha^{\prime n} \binom{1/2}{n} \right) ^2 \$에 대한 \$n\$에서 \$0\$에 \$\omega-1\$:
g ← (×⍨*×.5!⍨⊢)∘⍳
f ← ○1⊥+×9g⍨-÷+
a f b오른쪽에서 시작 :
-÷+\ 계산$h^\prime = (a-b)÷(a+b)\$.
g⍨되고 g감형 => 9 g⍨ h' ≡ h' g 9. \g 의 9 개 값으로 구성된 벡터를 반환합니다.$\left( h^{\prime n} \binom{1/2}{n} \right) ^2\$.
+×곱하기 \$a + b\$이 벡터에.
1⊥결과 벡터를 base 1에서 변환합니다. 이는 벡터를 합산하는 것과 같습니다.
○결과 숫자에 \를 곱합니다.$\pi\$.
지금 h' g 9:
⍳와 인덱스 생성한다 ⎕IO←0, ⍳9벡터의 결과 0 1 ... 8.
나머지 기차 ×⍨*×.5!⍨⊢는 이제 \$h^\prime\$왼쪽 인수와 벡터 \$v = (0,1, \cdots, 8)\$ 올바른 주장으로 :
.5!⍨⊢벡터로 불리는 감형 이항 계수 v의 오른쪽에는 \$0.5\$왼쪽에. 이것은 \$\binom{1/2}{n}\$모든 \$n \in v\$.
*×이 벡터를 요소별로 \를 곱합니다.$h^\prime * n\$( \$*\$지수를 나타냄).
×⍨오른쪽 인수 만 주어진 정류 곱셈은 이것을 왼쪽 및 오른쪽 인수로 사용하는 것처럼 보이는가? 벡터를 요소별로 제곱합니다.
R , 60 57 바이트
function(a,b,c=a+b,h=3*(a-b)^2/c)pi*(c+h/(10+(4-h/c)^.5))
온라인으로 시도하십시오!
Ramanujan의 2 차 근사 (eq 5)를 간단하게 구현합니다.
슬프게도이 근사치는 주석에 의해 유발 된보다 흥미로운 다른 접근 방식 보다 훨씬 간결 합니다. 큰 타원을 '그리고'그 가장자리 주변을 측정합니다 (불행히도 실제 픽셀을 세는 것은 작동하지 않을 것입니다. ..) :
R , 90 65 62 바이트
편집 : abs복소수의 값을 사용하여 빗변 길이를 계산하여 -3 바이트
function(a,b,n=1e5)sum(4*abs(diff(b*(1-(0:n/n)^2)^.5)+1i*a/n))
온라인으로 시도하십시오!
어떻게? (고립되지 않은 코드) :
circumference_of_ellipse=
function(a,b # a,b = axes of ellipse
n=1e6){ # n = number of pixels to 'draw' across 'a' axis
x=a*0:n/n # x coordinates = n pixels from 0 to a
y=b*(1-(x/a)^2)^.5) # y coordinates = to satisfy (x/a)^2 + (y/b)^2 =1
# we could actually draw the (quarter) ellipse here
# with 'plot(x,y)'
step_y=diff(y) # step_y = change in y for each step of x
step_x=a/n # step_x = size of each step of x
h=(step_y^2+step_x^2)^.5 # h=hypotenuse of triangle formed by step_y & step_x
sum(4*h) # sum all the hypotenuses and multiply by 4
# (since we only 'drew' a quarter of the ellipse)
x87 기계 코드, 65 59 53 바이트
00000000: d9c1 d9c1 dec1 d9ca dee9 d8c8 d9c1 d8c8 ................
00000010: def9 6a03 8bf4 de0c ff04 df04 d9c1 dee9 ..j.............
00000020: d9fa 8304 06de 04de f9d9 e8de c1d9 ebde ................
00000030: c9de c95e c3 ...^.
목록 :
D9 C1 FLD ST(1) ; load a to ST
D9 C1 FLD ST(1) ; load b to ST
DE C1 FADD ; a + b
D9 CA FXCH ST(2) ; save result for end
DE E9 FSUB ; a - b
D8 C8 FMUL ST(0), ST(0) ; ST ^ 2
D9 C1 FLD ST(1) ; copy a + b result to ST
D8 C8 FMUL ST(0), ST(0) ; ST ^ 2
DE F9 FDIV ; calculate h
6A 03 PUSH 3 ; load const 3
8B F4 MOV SI, SP ; SI to top of CPU stack
DE 0C FIMUL WORD PTR[SI] ; ST = h * 3
FF 04 INC WORD PTR[SI] ; 4 = 3 + 1
DF 04 FILD WORD PTR[SI] ; load const 4
D9 C1 FLD ST(1) ; load 3h to ST
DE E9 FSUB ; 4 - 3h
D9 FA FSQRT ; sqrt(ST)
83 04 06 ADD WORD PTR[SI], 6 ; 10 = 4 + 6
DE 04 FIADD WORD PTR[SI] ; ST + 10
DE F9 FDIV ; 3h / ST
D9 E8 FLD1 ; load const 1
DE C1 FADD ; ST + 1
D9 EB FLDPI ; load PI
DE C9 FMUL ; * PI
DE C9 FMUL ; * ( a + b ) from earlier
5E POP SI ; restore CPU stack
C3 RET ; return to caller
호출 함수 입력 a하고 b에서 ST(0)와 ST(1). 에서 출력 ST(0). 전체 하드웨어 80 비트 확장 정밀도에서 Ramanujan의 2 차 근사 (eq 5)를 구현합니다.
테스트 프로그램 :
JavaScript (ES7), 59 56 바이트
@DominicvanEssen 덕분에 2 바이트 절약
a=>b=>Math.PI*((h=3*(a-b)**2/(a+=b))/(10+(4-h/a)**.5)+a)
온라인으로 시도하십시오!
Ruby , 63 바이트
->a,b,h=1r*(a-b)/a+=b{3.141593*a*((154+53*h*=h)*h*h/1e4+h/4+1)}
온라인으로 시도하십시오!
직접 포트 Arnauld의 @의 자바 스크립트 대답은 짧고 (58 바이트)입니다. 그러나 저는 위의 63-byter가 3 차 다항식이라는 점에서 다른 접근 방식과 다르기 때문에 좋아합니다. 제곱근이없고 무한 급수가 없습니다.
이 훌륭한 리뷰 는 타원의 원주를 근사화하는 거의 40 개의 다른 방법을 나열하고 각 근사치의 상대 오차 그래프를 \ 의 함수로 표시합니다.$b/a\$. 나열된 방법 중 몇이 필요한 허용 오차를 만족시킬 수있는 그래프 쇼의 검사 \$10^{-6}\$모든 테스트 케이스에 대해. 여기에서 여러 답변이 이미 'Ramanujan II'(eq. (5))를 탐색했기 때문에 Padé 근사값 'Padé 3/2'및 'Padé 3/3'을 살펴보기로 결정했습니다.
Padé의 접근 음은 공지 멱급수의 용어의 가장 큰 가능한 수와 일치하도록 선택된 계수와 유리 함수이다. 이 경우 관련 멱급수는 eq에 나타나는 무한 합입니다. (4). 이 시리즈의 Padé 3/2 및 Padé 3/3 근사치는 수학적으로 간단하지만 (위에 링크 된 리뷰 참조) 코딩 골프에는 적합하지 않습니다. 대신, 근사값에 대한 근사값 은 최소 제곱 피팅에 의해 얻어집니다. 코드에 구현 된 결과 3 차 다항식 (절단 된 계수 포함)은 다음과 같습니다.$$ 0.0053h^3 + 0.0154h^2+0.25h+1. $$이 함수는 부분적으로 잘림 및 부분적으로 \의 해당 값만 사용하여 적합이 최적화 되었기 때문에 테스트 케이스에 과적 합되었습니다.$h=(a-b)^2/(a+b)^2\$테스트 케이스에서 발생합니다. (결과적으로 동일한 바이트 수에도 불구하고 \ 위의 상대 오류를 생성하지 않고 Math::PI대신을 대체 할 수 없습니다.3.141593$10^{-6}\$두 테스트 케이스에 대한 임계 값 \$b/a=1/2\$.)
J , 31 30 바이트
-1 바이트 덕분에 Jonah!
[:o.1#.+*i.@9*:@(^~*0.5!~[)-%+
온라인으로 시도하십시오!
본질적으로 @ovs의 APL 솔루션의 J 포트입니다 .
C (gcc) , 97 92 91 바이트
Dominic van Essen 덕분에 4 5 바이트 절약 !!! Ceilingcat 덕분에 2 바이트 절약 !!!
float f(a,b,k)float a,b,k;{k=k?:2;k=k>999?1:(1-b*b/a/a)*(k-4+3/k)/k*f(a,b,k+2)+6.283185*a;}
온라인으로 시도하십시오!
Port of Anders Kaseorg 의 Python 답변 .
MathGolf , 20 바이트
-ëΣ_¬/²3*_4,√♂+/)π**
내 05AB1E 대답의 포트 , 따라서 다섯 번째 수식의 수정도 구현합니다.
온라인으로 시도하십시오.
설명:
- # b-a
ëΣ # a+b
_ # Duplicate
¬ # Rotate stack: b-a,a+b,a+b → a+b,b-a,a+b
/ # Divide
² # Square
3* # Multiply by 3
_ # Duplicate
4, # Subtract from 4
√ # Square-root
♂+ # Add 10
/ # Divide
) # Increment by 1
π* # Multiply by PI
* # Multiply by the a+b we've duplicated
# (after which the entire stack is output implicitly as result)
SageMath , 37 바이트
lambda a,b:4*a*elliptic_ec(1-b*b/a/a)
온라인으로 시도하십시오!
타원 적분 공식을 사용합니다.
05AB1E , 22 21 20 바이트
ÆnIOn/3*D4s-tT+/>IOžqP
다섯 번째 공식을 구현합니다. 쌍으로 입력 \$[a,b]\$.
-1 byte 덕분에 @ovs .
온라인으로 시도 하거나 모든 테스트 사례를 확인하십시오 .
설명:
Æ # Reduce the (implicit) input-pair by subtraction: a-b
IO # Push the input-pair again and sum it: a+b
/ # Divide them by one another: (a-b)/(a+b)
n # Square it: ((a-b)/(a+b))²
3* # Multiply it by 3: ((a-b)/(a+b))²*3
D # Duplicate that
4α # Take the absolute difference with 4: |((a-b)/(a+b))²*3-4|
t # Take the square-root of that: sqrt(|((a-b)/(a+b))²*3-4|)
T+ # Add 10: sqrt(|((a-b)/(a+b))²*3-4|)+10
/ # Divide the duplicate by this:
# (a-b)²/(a+b)²*3/(sqrt(|((a-b)/(a+b))²*3-4|)+10)
> # Increase it by 1:
# (a-b)²/(a+b)²*3/(sqrt(|((a-b)/(a+b))²*3-4|)+10)+1
IO # Push the input-sum again: a+b
žq # Push PI: 3.141592653589793
P # Take the product of the three values on the stack:
# ((a-b)²/(a+b)²*3/(sqrt(|((a-b)/(a+b))²*3-4|)+10)+1)*(a+b)*π
# (after which the result is output implicitly)
나는 \$\left|3h-4\right|\$\ 대신$4-3h\$내 공식에서 바이트를 저장하지만 제약 조건이 주어지면 \$0<b\leq a\$, \$h\$다음과 같습니다. \$0\leq h<1\$, 따라서 \$3h\$최대 \$2.999\dots\$.
나는 또한 \$h=\left(\frac{a-b}{a+b}\right)^2\$\ 대신$h=\frac{(a-b)^2}{(a+b)^2}\$다른 바이트를 저장하려면 ( @ovs 덕분에 ).
APL (Dyalog Extended) , 28 바이트
○+×1+∘(⊢÷10+.5*⍨4-⊢)3×2*⍨-÷+
온라인으로 시도하십시오!
ovs의 기차로의 변환.
APL (Dyalog Extended) , 35 바이트
{h←3×2*⍨⍺(-÷+)⍵⋄(○⍺+⍵)×1+h÷10+√4-h}
온라인으로 시도하십시오!
방정식 4를 사용합니다.
\의 사용이 두 개 이상이기 때문에 다른 APL 답변보다 길다.$h\$.
Wolfram 언어 (Mathematica) , 25 24 바이트
4EllipticE[1-(#2/#)^2]#&
온라인으로 시도하십시오!
-1 @AndersKaseorg 덕분에
Mathematica는 타원 적분에 대해 다른 규칙을 사용하므로 제곱근이 사라집니다.
MATL , 19 바이트
y/U_Q.5t_hlbZh*YPE*
온라인으로 시도하십시오! 또는 모든 테스트 케이스를 확인하십시오 .
사용 된 공식
이는 챌린지 설명의 공식 (1), \ [C = 4a \ int ^ {\ pi / 2} _ {0} {\ sqrt {1-e ^ 2 \ sin ^ 2 \ theta}; d \를 기반으로합니다. theta} = 4 a \, E (e), \] 여기서 \$e\$편심, \ [e = \ sqrt {1-b ^ 2 / a ^ 2}, \] 및 \$E\$는 IS 두 번째 종류의 완전한 타원 적분 . 이 정수는 표현 될 수 가우스 초기 하 함수 , \${}_2F_1\$, 다음과 같습니다. \ [E (e) = \ tfrac {\ pi} {2} \; {} _ 2F_1 \ left (\ tfrac12,-\ tfrac12; 1; e ^ 2 \ right). \] 위의 조합은 코드에 사용 된 공식을 제공합니다. \ [C = 2 \ pi a \; {} _ 2F_1 \ left (\ tfrac12,-\ tfrac12; 1; 1-b ^ 2 / a ^ 2 \ right) . \]
코드 설명
y % Implicit inputs: a, b. Duplicate from below
% STACK: a, b, a
/ % Divide
% STACK: a, b/a
U_Q % Square, negate, add 1
% STACK: a, 1-(b/a)^2
.5t_h % Push 0.5, duplicate, negate, concatenate
% STACK: a, 1-(b/a)^2, [0.5, -0.5]
1 % Push 1
% STACK: a, 1-(b/a)^2, [0.5, -0.5], 1
b % Bubble up in the stack
% STACK: a, [0.5, -0.5], 1, 1-(b/a)^2
Zh % Hypergeometric function, 2F1
% STACK: a, 2F1([0.5, -0.5], 1, 1-(b/a)^2)
* % Multiply
% STACK: a * 2F1([0.5, -0.5], 1, 1-(b/a)^2)
YPE % Push pi, multiply by 2
% STACK: a * 2F1([0.5, -0.5], 1, 1-(b/a)^2), 2*pi
* % Multiply. Implicit display
% STACK: 2*pi*a * 2F1([0.5, -0.5], 1, 1-(b/a)^2)
목탄 , 52 바이트
≧×χφNθNηI×⁴ΣEEφE²∕⁺ιλφ₂⁺××θθ⁻Σι⊗₂Πι××ηη⁻⁻²Σι⊗₂⁻⊕ΠιΣι
온라인으로 시도하십시오! 링크는 자세한 코드 버전입니다. 사분면에 대한 선 적분을 근사하여 작동합니다. 기본 정밀도는 안타깝게도 ~ 5 개의 유효 숫자이므로 정밀도를 ~ 7 유효 숫자로 높이려면 처음 4 바이트가 필요합니다. 동일한 바이트 수에 대해 추가 증가가 가능하지만 TIO에서 시연하기에는 너무 느려집니다. 설명:
≧×χφ
조각 수 증가 \$ n \$사분면을 \$ 1,000 \$에 \$ 10,000 \$. ≧×φφ로 증가 할 것 \$ 1,000,000 \$ 하지만 TIO에게는 너무 느립니다.
NθNη
타원의 축 입력 \$ a \$및 \$ b \$.
I×⁴Σ
사분면을 세분화 한 각 조각의 대략적인 호 길이를 계산 한 후 합계에 \를 곱합니다.$ 4 \$ 전체 타원에 대해 결과를 출력합니다.
EEφE²∕⁺ιλφ
사분면의 조각 목록을 만듭니다. 타원 방정식에서 \$ \left ( \frac x a \right ) ^ 2 + \left ( \frac y b \right ) ^ 2 = 1 \$우리는 \$ \left ( \frac {x_i} a \right ) ^ 2 = \frac i n \$및 \$ \left ( \frac {y_i} b \right ) ^ 2 = 1 - \frac i n \$. 주어진 조각 인덱스 \$ i \$\ 사이의 거리를 계산하고 싶습니다.$ ( x_i, y_i ) \$및 \$ ( x _{i+1}, y_{i+1} ) \$. 각 \$ i \$우리는 \$ j = \frac i n \$및 \$ k = \frac {i+1} n \$ 목록을 반복합니다.
₂⁺××θθ⁻Σι⊗₂Πι××ηη⁻⁻²Σι⊗₂⁻⊕ΠιΣι
거리 \$ \sqrt { ( a \sqrt k - a \sqrt j ) ^ 2 + ( b \sqrt { 1 - j } - b \sqrt { 1 - k } ) ^ 2 } \$\로 확장$ \sqrt { a^2 \left ( j + k - 2 \sqrt { j k } \right ) + b^2 \left ( (1 - j) + (1 - k) - 2 \sqrt { (1 - j) (1 - k) } \right ) } \$확장되는 \$ \sqrt { a^2 \left ( j + k - 2 \sqrt { j k } \right ) + b^2 \left ( 2 - (j + k) - 2 \sqrt { 1 + j k - (j + k) } \right ) } \$.
젤리 , 20 바이트
I÷S²3×÷ạ4½+⁵Ʋ$‘×SרP
한 쌍을 받아들이는 모나 딕 링크 [a, b]는 공식 5의 결과를 산출합니다.
온라인으로 시도하십시오!
나는 포뮬러 4가 갈 길이라고 생각했지만 21 개 밖에 안됐다.
9Ḷ.c×⁹I÷S*⁸¤²ʋ€×ØP×SS
온라인으로 시도하십시오!
Haskell, 73 바이트
e a b=(a+b)*pi*(1+3*l/(10+sqrt(4-3*l))+3*l^5/2^17)where l=((a-b)/(a+b))^2
(5)의 개선 된 버전으로 실험 :
$$E(a,b) = \pi (a+b) \left( 1 + \frac{3h^2}{10 + \sqrt{4-3h^2}} + \frac{3h^{10}}{2^{17}}\right)$$
Pyth , 40 바이트
A,hQeQJc^-GH2^+GH2**.n0+GHhc*3J+T@-4*3J2
온라인으로 시도하십시오!
여기에있는 대부분의 다른 답변과 마찬가지로 공식 5입니다.
Perl 5 , 70 바이트
sub{my$s;map$s+=sqrt+($_[0]*cos)**2+($_[1]*sin)**2,0..1570795;4e-6*$s}
온라인으로 시도하십시오!
Perl 5 , 78 바이트
sub f{($a,$b)=@_;$H=3*(($a-$b)/($a+=$b))**2;3.141593*$a*(1+$H/(10+sqrt 4-$H))}
와 a+=b자바 스크립트 응답에서 도난 트릭.
온라인으로 시도하십시오!
또는 이것은 13 바이트 미만 (그러나 핵심 모듈 List :: Util 사용)
Perl 5 -MList :: Util = sum, 74 65 65 + 16 바이트
sub f{4e-6*sum map sqrt+($_[0]*cos)**2+($_[1]*sin)**2,0..1570795}
온라인으로 시도하십시오!
수식 (1)의 변형을 수치 적으로 계산합니다.
나는 이것이 1570795 ≈ 500000π까지 정수의 sin과 cos로 작동한다는 것에 놀랐습니다. 그러나 "온라인 시도"질문의 테스트에는 상대 오류가 <0.000001입니다. 추측 sin²(the integers)은 충분히 "평균 이상"입니다.
CJam , 29 바이트
{_:+_P*@:-@d/_*3*_4\-mqA+/)*}
온라인으로 시도하십시오!
Arn , 22 바이트
┴þ5‡Ô縄”R¤ËíÜç›WðÙÝÁ*
시도 해봐! 꽤 좋은 근사치이지만 더 큰 값에 대해서는 정확하지 않습니다. 줄이 그어진 공식을 사용합니다 (나는 무의미하게 제거되었다고 가정합니다). 궁금한 점이 있으면 십자 표가없는 공식을 5에서 33 바이트로 줄일 수 있었지만 단축하는 방법을 알 수 없었습니다 (이보다 정확도가 떨어졌습니다).
설명
포장 풀기 : pi*(3*(+\)-:/(*3+:})*+3*:}
pi Variable; first 20 digits of π
*
(
3
*
(+\) Folded sum ([a, b] -> a + b)
-
:/ Square root
(
_ Variable; initialized to STDIN; implied
*
3
+
_ Implied
:} Tail
)
*
_ Implied
+
3
*
_ Implied
:}
Ending parentheses implied
Symja , 35 바이트
f=N(4*#1*EllipticE(1-#2*#2/#1/#1))&
온라인으로 시도하십시오!
Symja의 SageMath 답변 포트.
Japt , 35 바이트
MP*ºH=3*(U-V ²/(U±V)/(A+(4-H/U ¬ +U
시도 해봐