Befunge-98 (PyFunge), 120 Bytes
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<
Probieren Sie es online aus!
Dies ist eine Grenze in Bezug auf das Zeitlimit. 10.000 Stellen dauern auf meinem Laptop ungefähr 11 Sekunden, aber ich bin mir sicher, dass es einen "vernünftigen" PC geben muss, der dies schneller kann.
Wenn Sie es jedoch auf TIO ausprobieren, beachten Sie, dass es nichts zurückgibt, bis das Zeitlimit von 60 Sekunden erreicht ist, da der Algorithmus so konzipiert ist, dass er für immer weitergeht. Zu diesem Zeitpunkt haben Sie jedoch weit mehr als 10.000 Stellen.
Ich verwende den Jeremy Gibbons-Zapfenalgorithmus, der meiner Meinung nach mit den meisten anderen Antworten hier identisch ist. Beachten Sie jedoch, dass dies davon abhängt , dass der Interpreter über Speicherzellen mit beliebiger Genauigkeit verfügt. Die einzige mir bekannte Implementierung, die dies unterstützt, ist PyFunge .
Erläuterung
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.