Pi es un número irracional , lo que significa que su representación decimal nunca termina o se repite.
Pi truncado a 41 dígitos decimales (40 lugares) es 3.1415926535897932384626433832795028841971
.
Si ignoramos el punto decimal y enumeramos los dígitos como una secuencia de enteros positivos, evitando duplicados , obtenemos 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 ).
(Observe que 15
aparece en la secuencia en lugar de 1 5
porque 1
ya había ocurrido.
También tenga en cuenta que 0
no ocurre porque no es positivo; 950
contiene el primer cero).
Para construir el primer número pirracional , usamos esta secuencia para indexar los dígitos de Pi (el primer dígito es 3, el segundo 1, etc.).
Entonces, el primer dígito del primer número pirracional es el tercer dígito de Pi,
el segundo dígito es el primer dígito de Pi,
el tercer dígito es el cuarto dígito de Pi,
el cuarto es el décimo quinto dígito de Pi,
y así sucesivamente.
Se agrega un punto decimal después del primer dígito para imitar Pi.
Así, el primer número pirracional de 41 dígitos es 4.3195195867462520687356193644029372991880
.
(Tenga en cuenta que para el 30º dígito tuve que ir hasta el 974º dígito de Pi).
Para construir el segundo número pirracional, el proceso se repite utilizando el primer número pirracional en lugar de Pi. (Pi mismo puede llamarse el número pirracional cero). Entonces, la nueva secuencia es 4 3 1 9 5 19 58 ...
y el primer número piracional se indexa para producir el segundo, que comienza 9.14858...
.
Otros números pirracionales se crean de la misma manera, cada uno generado a partir del anterior.
Desafío
Su tarea consiste en escribir el programa más corto posible que se lleva en dos enteros, N
y D
, y emite el N
número pirrational º truncada de D
dígitos decimales.
D
siempre es positivo, pero N
no es negativo, y los D
dígitos de Pi deben salir cuando N
es 0.
Cuando D
es 1, no importa si el punto decimal está presente o no.
La entrada debe provenir de stdin o la línea de comando y la salida debe ir a stdout (o las alternativas más cercanas a su idioma).
Su programa debería funcionar para todos los valores de entrada de N
y D
por debajo de 2 16 , pero no necesita ser oportuno o eficiente.
El código más corto en bytes gana.
(Tenga en cuenta que los números pirracionales existen en otras bases, pero todo en este desafío se hace en la base 10.)
N=1
, D=13393
por ejemplo, se necesitaría el dígito 31000000o de PI