Antecedentes:
Pi ( π
) es un número trascendental y, por lo tanto, tiene una representación decimal sin terminación. Similar, la representación no termina si está escrita en cualquier otra base entera. Pero, ¿y si lo escribimos en la base π
?
Los dígitos en decimal representan potencias de 10, entonces:
π = 3.14… = (3 * 10^0) + (1 * 10^-1) + (4 * 10^-2) + …
Entonces, en base π
, los dígitos representarían poderes de π
:
π = 10 = (1 * π^1) + (0 * π^0)
En esta nueva base, los enteros ahora tienen representaciones sin terminación. Entonces 10 en decimal ahora se convierte en lo siguiente:
10 => 100.01022… = (1 * π^2) + (0 * π^1) + (0 * π^0) + (0 * π^-1) + (1 * π^-2) + …
Tenga en cuenta que en base π
los dígitos utilizados son 0,1,2,3 porque estos son los dígitos menores que π
.
Desafío:
Dado un número entero no negativo x
, ya sea:
Salida (sin detener) su representación en base
π
. Si el número tiene una representación finita (0, 1, 2, 3), entonces el programa puede detenerse en lugar de imprimir ceros infinitos.Tome un entero arbitrariamente grande
n
y genere los primerosn
dígitos dex
in baseπ
.
Reglas:
- Dado que un número tiene múltiples representaciones posibles, debe generar la que parece más grande (normalizada). Al igual que
1.0 = 0.9999…
en decimal, este problema también existe en esta base. En la baseπ
, uno está quieto1.0
, pero también podría escribirse como0.3011…
, por ejemplo. Del mismo modo, diez es100.01022…
, pero también podría escribirse como30.121…
o23.202…
. - Este es el código de golf, por lo que gana menos bytes. Programa o función.
- No hay muebles empotrados ( estoy mirando a usted , 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…
Primeros 10,000 dígitos de diez en la base Pi
Verificación:
Puede verificar cualquier salida que desee utilizando el código de Mathematica aquí . El primer parámetro es x
, el tercero es n
. Si se agota el tiempo de espera, elige uno pequeño n
y ejecútalo. Luego haga clic en "Abrir en Código" para abrir una nueva hoja de trabajo de Mathematica con el programa. No hay límite de tiempo allí.
Convierta la salida resultante a un número aquí .
Relacionado:
fuente
n
, supongo que Pi debe tener al menosn
dígitos de precisión.Respuestas:
Julia 0.6 , 81 bytes
Imprime dígitos (y el. Que me costó 14 bytes) hasta que la pila se desborda a unos 22k dígitos en TIO. Si se me permite pasar la entrada como un
BigFloat
puedo cortar 5 bytes. Hace uso de la constante de precisión arbitraria incorporadaπ
. Pero es un poco más genial que eso, en realidad es una constante de precisión adaptativa,π*1.0
es un número de coma flotante de 64 bits,π*big(1.0)
(también conocido como multiplicado por un número de precisión más alto) daπ
lo que sea que esté establecida su precisión.Pruébalo en línea!
fuente
Python 3 ,
471317310 bytes7 bytes gracias a caird coinheringaahing.
Seguramente hay campos de golf que me perdí. Siéntase libre de señalarlos en los comentarios.
Pruébalo en línea!
Versión sin golf:
Pruébalo en línea!
fuente
`i`
.Rubí
-rbigdecimal/math
,11110397 bytesPruébalo en línea!
Toma el número de entrada como
x
y la precisión deseada comon
. Salidas por impresión. Utiliza la biblioteca incorporada BigDecimal para el valor PI de precisión arbitraria.fuente
Python 3 + sympy, 144 bytes
Pruébalo en línea!
Muy lento, en realidad.
fuente