Pi ist eine irrationale Zahl , was bedeutet, dass ihre Dezimaldarstellung niemals endet oder sich wiederholt.
Pi abgeschnitten auf 41 Dezimalstellen (40 Stellen) ist 3.1415926535897932384626433832795028841971
.
Wenn wir den Dezimalpunkt ignorieren und die Ziffern als eine Folge positiver Ganzzahlen auflisten , wobei Duplikate vermieden werden , erhalten wir 3 1 4 15 9 2 6 5 35 8 97 93 23 84 62 64 33 83 27 950 28 841 971
( OEIS A064809 ).
(Hinweis, 15
der in der Sequenz anstelle von " 1 5
weil" angezeigt wird, ist 1
bereits aufgetreten.
Beachten Sie auch, dass dieser Hinweis 0
nicht auftritt, da er nicht positiv 950
ist und die erste Null enthält.)
Um die erste pirrationale Zahl zu konstruieren, verwenden wir diese Sequenz, um die Ziffern von Pi zu indizieren (die erste Ziffer ist 3, die zweite 1 usw.).
Die erste Ziffer der ersten pirrationalen Zahl ist also die dritte Ziffer von Pi,
die zweite Ziffer ist die erste Ziffer von Pi,
die dritte Ziffer ist die vierte Ziffer von Pi,
die vierte ist die 15. Ziffer von Pi
und so weiter.
Nach der ersten Ziffer wird ein Dezimalpunkt hinzugefügt, um Pi nachzuahmen.
Somit ist die erste Irritationszahl auf 41 Stellen 4.3195195867462520687356193644029372991880
.
(Beachten Sie, dass ich für die 30. Ziffer bis zur 974. Ziffer von Pi gehen musste.)
Um die zweite Pirrationszahl zu konstruieren, wird der Vorgang unter Verwendung der ersten Pirrationszahl anstelle von Pi wiederholt. (Pi selbst kann als nullte Pirrationszahl bezeichnet werden.) Die neue Sequenz lautet also 4 3 1 9 5 19 58 ...
und die erste Pirrationszahl wird indiziert, um die zweite zu erzeugen, die beginnt 9.14858...
.
Weitere pirrationale Zahlen werden auf die gleiche Weise erzeugt, wobei jede aus der vorherigen generiert wird.
Herausforderung
Ihre Aufgabe ist es das kürzeste Programm möglich zu schreiben , die in zwei ganzen Zahlen nehmen, N
und D
, und gibt die N
th pirrational Zahl gekürzt auf D
Dezimalstellen.
D
ist immer positiv, aber N
nicht negativ, und die D
Ziffern von Pi sollten ausgegeben werden, wenn N
0 ist.
Wenn D
1 ist, spielt es keine Rolle, ob der Dezimalpunkt vorhanden ist oder nicht.
Die Eingabe sollte von stdin oder der Befehlszeile kommen, und die Ausgabe sollte zu stdout (oder den nächstgelegenen Alternativen Ihrer Sprache) gehen.
Ihr Programm sollte für alle Eingabewerte von N
und D
unter 2 16 funktionieren , es muss jedoch nicht rechtzeitig oder effizient sein.
Der kürzeste Code in Bytes gewinnt.
(Beachten Sie, dass pirrationale Zahlen in anderen Basen existieren, aber alles in dieser Herausforderung in Basis 10 erledigt wird.)
N=1
, D=13393
zum Beispiel, würden Sie die 31000000. Stelle der PI benötigen