Pi é um número irracional , o que significa que sua representação decimal nunca termina ou se repete.
Pi truncado com 41 dígitos decimais (40 casas) é 3.1415926535897932384626433832795028841971.
Se ignorarmos o ponto decimal e listar os dígitos como uma sequência de números inteiros positivos, evitando duplicatas , obteremos 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 15aparece na sequência em vez de 1 5porque 1já havia ocorrido.
Observe também que 0não ocorre porque não é positivo; 950contém o primeiro zero.)
Para construir o primeiro número pirracional , usamos essa sequência para indexar os dígitos do Pi (o primeiro dígito é 3, o segundo 1 etc.).
Portanto, o primeiro dígito do primeiro número pirracional é o terceiro dígito do Pi,
o segundo dígito é o 1º dígito do Pi,
o terceiro dígito é o 4º dígito do Pi,
o quarto é o 15º dígito do Pi,
e assim por diante.
Um ponto decimal é adicionado após o primeiro dígito para imitar Pi.
Assim, o primeiro número pirracional com 41 dígitos é 4.3195195867462520687356193644029372991880.
(Observe que, para o 30º dígito, tive que percorrer todo o caminho até o 974º dígito do Pi.)
Para construir o segundo número pirracional, o processo é repetido usando o primeiro número pirracional em vez de Pi. (O próprio Pi pode ser chamado de número pirracional zero.) Portanto, a nova sequência é 4 3 1 9 5 19 58 ...e o primeiro número piiracional é indexado para produzir o segundo, que inicia 9.14858....
Outros números pirracionais são criados da mesma maneira, cada um sendo gerado a partir do número anterior.
Desafio
Sua tarefa é escrever o programa mais curto possível, que recebe dois números inteiros, Ne D, e gera o Nnúmero pirracional truncado para Ddígitos decimais.
Dé sempre positivo, mas Nnão negativo, e os Ddígitos de Pi devem ser impressos quando Né 0.
Quando Dé 1, não importa se o ponto decimal está presente ou não.
A entrada deve vir de stdin ou a linha de comando e a saída deve ir para stdout (ou as alternativas mais próximas do seu idioma).
Seu programa deve funcionar para todos os valores de entrada iguais Nou Dinferiores a 2 16 , mas não precisa ser oportuno ou eficiente.
O código mais curto em bytes vence.
(Observe que os números pirracionais existem em outras bases, mas tudo neste desafio é feito na base 10.)
N=1, D=13393por exemplo, você precisaria o dígito 31 milionésimo de PI