Befunge-98 (PyFunge), 120 bayt
cf*10p'<20p11>00p1+:30p:::*+39**6+:30g39**c-00g*10gv
>:2*1-*00g*a*^
^:p02*g02p01*a*-*g02\+g01*g00-2*5g03,+*86:/*5g02+*5<
Çevrimiçi deneyin!
Bu, zaman sınırı bakımından sınırdır. Dizüstü bilgisayarımda 10.000 basamak yaklaşık 11 saniye sürüyor, ancak eminim bundan daha hızlı yapabilen "makul" bir bilgisayar olmalı.
Ancak, TIO üzerinde deniyorsanız, algoritma sonsuza kadar devam edecek şekilde tasarlandığından, 60 saniyelik zaman sınırına ulaşana kadar hiçbir şey döndürmeyeceğini unutmayın. O zamana kadar 10.000'den fazla basamağa sahip olacaksınız.
Jeremy Gibbons spigot algoritmasını kullanıyorum, buradaki diğer cevapların çoğu ile aynı olduğunu düşünüyorum. Ancak, bunun yorumlayıcıya keyfi hassas bellek hücrelerine dayandığını ve bunun desteklediğinin farkında olduğum tek uygulamanın PyFunge olduğunu unutmayın .
açıklama
cf*10p Initialise r to 180.
'<20p Initialise t to 60.
11 Initialise i and q on the stack to 1.
> Start of the main loop.
00p Save the current value of q in memory.
1+:30p Increment i and save a copy in memory.
:::*+39**6+ Calculate u = 27*(i*i+i)+6.
: Make a duplicate, since we'll need two copies later.
30g39**c-00g*10gv Calculate y = (q*(27*i-12)+5*r)/(5*t).
/*5g02+*5<
,+*86: Convert y to a character so we can output it.
*a*-*g02\+g01*g00-2*5g03 Calculate r = 10*u*(q*(i*5-2)+r-y*t)
p01 Save the updated r.
*g02 Calculate t = t*u
p02 Save the updated t.
>:2*1-*00g*a* Calculate q = 10*q*i*(i*2-1).
^:
^ Return to the start of the main loop.