Salida con el mismo número de dígitos de pi que la longitud del código


9

Su desafío es imprimir xdígitos de pi donde xestá la longitud de su código.

Ejemplos:

Source code (length) -> output
foo!        (4)         3.141
foobar      (6)         3.14159
kinda long  (10)        3.141592653
+++++       (5)         3.1415
123456789   (9)         3.14159265

Puede usar para determinar la cantidad de dígitos que necesita imprimir. Tenga en cuenta que el punto decimal no cuenta como un dígito de pi, por lo que el código de longitud 3 debe tener salida , de longitud 4.floor(π/10 * 10code_length) / 10code_length - 13.14

Reglas:

  • La longitud de su código debe ser mayor de tres caracteres.
  • No puede usar ninguna laguna estándar.
  • Puede usar cualquier método de salida estándar permitido.
  • No puede leer su fuente para determinar la longitud del código.
  • No puede usar una constante pi incorporada.
  • Pi debe ser completamente preciso y no aproximado.
  • El punto decimal en la salida es necesario. Si elige generar a través del valor de retorno, debe devolver un entero de punto flotante.
  • El objetivo de este desafío es encontrar la solución más corta en cada idioma, no el idioma más corto para la solución. No tenga miedo de publicar una solución en un idioma cuando se publique una solución más corta en el mismo idioma siempre que su solución utilice un método diferente.

... así que sería esta sea válida o no?
Jonathan Allan

(editar ^ esto incluso (redondeo))
Jonathan Allan

"Longitud del código" ← en bytes o en caracteres?
Lynn

@ Lynn Bytes, como siempre.
MD XF

¿Solo está 3permitido?
NoOneIsHere

Respuestas:


3

Japt , 9 4 bytes

Tan corto como sea posible :)

Incluye un no imprimible (avance de línea inversa, charcode 141) después de #.

3.#

Pruébalo

En Japt, cualquier siguiente carácter #se convierte a su código de carácter y se agrega a cualquier dígito o punto decimal que pueda precederlo, en este caso el3.




6

VBA (Excel), 15 bytes

MsgBox 4*Atn(1)

Salida: 3.14159265358979

Creo que esto no es aceptable ya que jugué golf solo para que se ajuste a la longitud del PI. La longitud sin golf es de 17 bytes. RE:


1
Parece que aún no ha sido bienvenido, así que ¡bienvenido al sitio!
MD XF

Oh, gracias señor! : D
remoel

¿No es Atnardiente? No estoy seguro de si esto está permitido ... preguntando a OP
JungHwan Min

Pensé que OP se refiere solo a PI incorporado. Culpa mía.
Remoel

5

Jalea , 6 bytes

3;⁽4ƒṾ

Pruébalo en línea!

Grabados 3,14159con el separador decimal permitido "europeo", ,.

¿Cómo?

3;⁽4ƒṾ - Main link: no arguments
3      - literal 3                3
  ⁽4ƒ  - base 250 literal 14159   14159
 ;     - concatenate              [3,14159]
     Ṿ - unevaluate               ['3', ',', '1', '4', '1', '5', '9']
       - implicit print           3,14159

1
Esa lista de dígitos parece extraña. Creo que hay un extra ,'allí.
Jonathan Frech

1
Puede hacer -ÆAær5y usar en .lugar de ,, pero sería lo mismo que mi solución Jelly.
Zacharý



4

Desmos , 130 bytes

f\left(\right)=\frac{\operatorname{floor}\left(10^{128}\cdot 4\sum_{k=1}^{9^9}\frac{\left(-1\right)^{k+1}}{2k-1}\right)}{10^{128}}

El código fuente para esto (al que se puede acceder copiando y pegando dentro y fuera de Desmos) no es óptimo cuando se genera usando el editor Desmos, por lo que se redujeron unos pocos bytes de espacio en blanco cuando fue posible.

Esto define una función fque no toma argumentos devuelve pi, calculada usando la secuencia de Gregory para k=9^9 (no puedo confirmar que sea lo suficientemente precisa, sin embargo, creo que es así, puede hacerse más precisa con un mayor valor de k ) luego 128coloca el resultado en decimales, que, junto con 3., es la longitud del código fuente.

Pruébalo en línea!


¿Cómo se ve realmente el resultado? Solo veo 3.14159265617, estoy mirando en el lugar equivocado; ¿Necesito presionar un botón?
Jonathan Allan

Desmos no imprime de manera predeterminada en tantos decimales como se proporciona, pero el valor aún debe ser exacto.
ATaco

1
Eso es decepcionante ya que el desafío es "imprimir ..."
Jonathan Allan

1
"El punto decimal en la salida es necesario. Si elige generar a través del valor de retorno, debe devolver un entero de coma flotante". Lo que hace que esto sea válido.
ATaco

Siento que la intención de esa declaración no era permitir menos precisión sino asegurar un separador decimal. Eso sí, no creo que tu respuesta sea mala.
Jonathan Allan




3

Neim , 5 bytes

3FBρσ

Explicación:

3      Push 3
 FB    F pushes 45, B converts it into a character code, '.'
   ρ   Push 14
    σ  Push 15
Implicitly concatenate and print stack

Pruébalo en línea!


3

APL, 6 bytes

10○⍟-1

Toma la parte imaginaria de ln (-1).

Pruébalo en línea!


¡Hola, bienvenido de nuevo @Uriel! Agradable, no estaba pensando en algo así (con registros de números negativos), ¡buen trabajo!
Zacharý

@ Zacharý gracias, acabo de dejar una visita y no pude evitar responder esto: P
Uriel

2

J , 16 bytes

17j15":4*_3 o.1:

Pruébalo en línea!

Similar a la respuesta de VBA. Salidas: 3.141592653589793.


"No puede usar una macro incorporada o una constante para determinar pi". Divertido, es tu comentario
Leaky Nun

Su salida es de 17 bytes, no 16.
ATaco

1
@ATaco exactamente, son 16 dígitos
solo ASCII

@LeakyNun no lo hace. _3 o.1calcula atan (1). Como habrás sabido, soy muy consciente de las reglas.
Conor O'Brien

2

Math.JS , 17 bytes.

     log(-1,e).im

Eso es 5 espacios principales

Esto calcula a 15 decimales, e implícitamente lo imprime.

¡Pruébelo en línea!


Bueno, técnicamente esto calcula la porción imaginaria de ln(-1), pero dado que es un número puramente imaginario, es equivalente a dividir por i.
Zacharý

2

05AB1E , 11 bytes

3•∊&SK•)'.ý

Pruébalo en línea!

COMMAND     # CURRENT STACK         | EXPLANATION
------------#-----------------------+-----------------------------------
3           # [3]                   | Push 3.
 •∊&SK•     # [3, 1415926535]       | Push compressed base-255 number 1415926535.
       )    # [[3,1415926535]]      | Wrap the 2 to an array.
        '.  # [[3,1415926535],'.']  | Push a decimal point.
          ý # ['3.1415926535']      | Join 3 and 1415926535 with a decimal point.

UTILIZANDO INSTRUMENTOS:

05AB1E , 4 bytes

žq5£

Pruébalo en línea!


3žs no funciona por alguna razón ...


@ Zacharý ¿me perdí algo? ¿Por qué es eso especial xD?
Magic Octopus Urn

Está en mi nombre de usuario, y también, ¿puedes agregar una explicación?
Zacharý

@ Zacharý HA! Mi cerebro estaba repasando todas las posibles bromas divertidas relacionadas con PPCG que podrían ser, quedando en blanco. Pienso demasiado mierda.
Magic Octopus Urn

@ Zacharý también, agregó.
Magic Octopus Urn

Si MY tuviera IO implícito, no habría forma de vencer E3., ahora estoy enojado conmigo mismo: p.
Zacharý

2

ForceLang , 269 bytes

set S 0x5F258E476FC1B3B5571012206C637089460E41E814CB071E61431B5F0671F551D18D2C5D2D3A2565E408C6DE8D753F595B6E9979C3866D1C9965008DCFB02E3BD11D21DFFAF17978F05C8BBACF55A5ED5E90B1D8CAD8736AA4B728EB342B453F86353DB371D322B6A98613BC5CCB00AC2.mult 1e-270
io.write S.toString 268

Enlace al idioma en github al menos.
Jonathan Allan

2

MATL , 9 8 bytes

-1X;V9:)

Pruébalo en línea!

Explicación:

-1      % number literal
X;      % inverse cosine (radians), giving pi
V       % convert to string
9       % specify precision
:)      % keep first 9 characters - 8 digits of precision

¡Ahorré un byte gracias a Luis Mendo!


1

Jalea , 6 bytes

-ÆAær5

Pruébalo en línea!

Utiliza un enfoque diferente al de las otras respuestas de Jelly.

¿Cómo?

-ÆAes el coseno inverso de -1(que es pi), ær5recupera la sección necesaria. Funcionó, por lo que el redondeo es equivalente al truncamiento en este caso



1

Perl 5, 40 bytes

}{$\=$\/~(2*$_)*~$_+2for-130..-2

Requiere la opción de línea de comando -pMbignum , contada como 8.

Uso de muestra:

$ perl -pMbignum test.pl < /dev/null
3.141592653589793238462643383279502884197

Pido disculpas por no haber un enlace TIO, no parece ser compatible bignum(o una llave de apertura inigualable ...).


1

MI , 7 bytes

’2ō"8↑↵

Pruébalo en línea!

¿Cómo?

  • , disminuye la parte superior de la pila ( 0aparece si está vacío, haciendo que la pila[-1] ). (Mismo símbolo que Jelly)
  • 2, empujar 2 .
  • ō, ya que la parte superior de la pila es dos, descarta el 2pop n, luego presiona acos(n)(en radianes, esto da pi, este símbolo tiene oun signo negativo encima.o (para trigonometría normal) proviene de APL).
  • ", haga estallar el elemento superior de la pila y empújelo como una cadena.
  • 8, empujar 8 .
  • , pop aentonces b, empujeb[:a] (Este es otro símbolo tomado de APL).
  • , salida con una nueva línea (OUTPUT <- STACK).

Luego agregue salida implícita: P
MD XF

Estoy manteniendo fiel a la naturaleza de mi, yo podría hacer una versión mejorada con la sintaxis real, y sin duda con la salida implícita
Zachary

1

RPL (HP48), 86.5 bytes, 87 dígitos [¿Esto cuenta?]

« GROB 8 43
14159265358979323846264338327950288419716939937510582097494459230781640628620899862803
→STR 9 OVER SIZE SUB 2 "." REPL »

GROB es una palabra clave de imagen. Los 2 números que siguen son ancho y alto. Los dígitos hexadecimales que siguen son mapas de bits. Eso es 1 byte de almacenamiento por cada 2 dígitos más los metadatos de la imagen.

Programa vacío « » toma 10 bytes. Un comando toma 2.5 bytes. Un flotante toma 10.5 bytes, pero si es igual a un entero de un solo dígito, puede tomar 2.5 bytes.

HP48 almacena 4 en lugar de 8 bits en cada ubicación de memoria, por lo que un byte ocupa 2 ubicaciones consecutivas (low endian). A menudo se utilizan fragmentos de 20 bits, y toman 2.5 bytes (no 3).





0

Excel VBA, 16 bytes

Funciones de ventana inmediata anónima de VBE que no requieren entrada ni salida a ninguno de los STDOUT de Excel VBA

Cada línea representa una función separada que devuelve Pi de longitud 16

?Mid(4*Atn(1),1)
?Str([Acos(-1)])
Debug.?4*Atn(1);
MsgBox[Acos(-1)]
[A1]="=ACOS(-1)"



0

TI-BASIC, 7 bytes

round(4tan⁻¹(1),6

round(2sin⁻¹(1),6

round(cos⁻¹(-1),6

Estas tres declaraciones se imprimirán 3.141593.


Nota: TI-BASIC es un lenguaje tokenizado. El recuento de caracteres no es igual al recuento de bytes.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.