Fundo:
Pi ( π
) é um número transcendental e, portanto, possui uma representação decimal não-terminante. Similar, a representação não termina se escrita em qualquer outra base inteira. Mas e se nós o escrevemos na base π
?
Dígitos em decimais representam potências de 10, portanto:
π = 3.14… = (3 * 10^0) + (1 * 10^-1) + (4 * 10^-2) + …
Portanto, na base π
, os dígitos representariam potências de π
:
π = 10 = (1 * π^1) + (0 * π^0)
Nesta nova base, os números inteiros agora têm representações sem terminação. Portanto, 10 em decimal agora se torna o seguinte:
10 => 100.01022… = (1 * π^2) + (0 * π^1) + (0 * π^0) + (0 * π^-1) + (1 * π^-2) + …
Observe que, na base, π
os dígitos usados são 0,1,2,3, porque esses são dígitos menores que π
.
Desafio:
Dado um número inteiro não negativo x
, ou:
Saída (sem parar) sua representação na base
π
. Se o número tiver uma representação finita (0, 1, 2, 3), o programa poderá parar em vez de imprimir zeros infinitos.Pegue um número inteiro arbitrariamente grande
n
e produza os primeirosn
dígitos dex
em baseπ
.
Regras:
- Como um número tem várias representações possíveis, você deve exibir a que aparece a maior (normalizada). Assim como
1.0 = 0.9999…
em decimal, esse problema também existe nesta base. Na baseπ
, um ainda está1.0
, mas também pode ser escrito como0.3011…
, por exemplo. Da mesma forma, dez é100.01022…
, mas também pode ser escrito como30.121…
ou23.202…
. - Isso é código-golfe, e o menor número de bytes vence. Programa ou função.
- Sem built-ins ( estou olhando para você , Mathematica )
Resultados:
0 = 0
1 = 1
2 = 2
3 = 3
4 = 10.220122021121110301000010110010010230011111021101…
5 = 11.220122021121110301000010110010010230011111021101…
6 = 12.220122021121110301000010110010010230011111021101…
7 = 20.202112002100000030020121222100030110023011000212…
8 = 21.202112002100000030020121222100030110023011000212…
9 = 22.202112002100000030020121222100030110023011000212…
10 = 100.01022122221121122001111210201201022120211001112…
42 = 1101.0102020121020101001210220211111200202102010100…
1337 = 1102021.0222210102022212121030030010230102200221212…
9999 = 100120030.02001010222211020202010210021200221221010…
Primeiros 10.000 dígitos de dez na base Pi
Verificação:
Você pode verificar qualquer saída que desejar usando o código do Mathematica aqui . O primeiro parâmetro é x
, o terceiro é n
. Se expirar, escolha um pequeno n
e execute-o. Em seguida, clique em "Abrir no código" para abrir uma nova planilha do Mathematica com o programa. Não há limite de tempo lá.
Converta a saída resultante em um número aqui .
Palavras-chave:
n
, acho que o Pi deve ter pelo menos n
dígitos de precisão.