Output con lo stesso numero di cifre di pi della lunghezza del codice


9

La tua sfida è stampare xcifre di pi dove xè la lunghezza del tuo codice.

Esempi:

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

È possibile utilizzare per determinare il numero di cifre che è necessario stampare. Si noti che il punto decimale non conta come una cifra di pi - quindi il codice di lunghezza 3 dovrebbe avere output , di lunghezza 4.floor(π/10 * 10code_length) / 10code_length - 13.14

Regole:

  • La lunghezza del codice deve essere superiore a tre caratteri.
  • Non è possibile utilizzare alcuna scappatoia standard.
  • È possibile utilizzare qualsiasi metodo di output consentito standard.
  • Non è possibile leggere la fonte per determinare la lunghezza del codice.
  • Non è possibile utilizzare una costante pi integrata.
  • Pi deve essere completamente preciso e non approssimato.
  • È necessario il punto decimale nell'output. Se si sceglie di eseguire l'output tramite il valore restituito, è necessario restituire un numero intero in virgola mobile.
  • L'obiettivo di questa sfida è trovare la soluzione più breve in ogni lingua, non la lingua più breve per la soluzione. Non abbiate paura di pubblicare una soluzione in una lingua quando viene pubblicata una soluzione più breve nella stessa lingua, purché la soluzione utilizzi un metodo diverso.

... quindi sarebbe questo essere valido o no?
Jonathan Allan,

(modifica ^ anche questo (arrotondamento))
Jonathan Allan,

"Lunghezza del codice" ← in byte o in caratteri?
Lynn,

@Lynn Bytes, come al solito.
MD XF,

È solo 3permesso?
NoOneIsHere

Risposte:


3

Japt , 9 4 byte

Il più breve possibile può ottenere :)

Include un non stampabile (avanzamento riga inversa, codice di caratteri 141) dopo il #.

3.#

Provalo

In Japt, qualsiasi carattere che segue #viene convertito nel suo codice carattere e aggiunto a qualsiasi cifra o punto decimale che può precederlo, in questo caso il3.




6

VBA (Excel), 15 byte

MsgBox 4*Atn(1)

Uscita: 3.14159265358979

Penso che questo non sia accettabile poiché l'ho giocato solo per adattarmi alla lunghezza del PI. La lunghezza non golfata è di 17 byte. D:


1
Sembra che tu non sia ancora stato accolto, quindi benvenuti nel sito!
MD XF,

Oh, grazie signore! : D
rimuovi il

Non è Atnarctangente? Non sono sicuro se questo è permesso ... chiedendo OP
JungHwan Min

Pensavo che OP si riferisse solo a PI incorporato. Colpa mia.
rimodella il

5

Gelatina , 6 byte

3;⁽4ƒṾ

Provalo online!

Stampa 3,14159con il separatore decimale "europeo" consentito,, .

Come?

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
Quell'elenco di cifre sembra strano. Penso che ci sia un extra ,'lì dentro.
Jonathan Frech,

1
Puoi fare -ÆAær5e usare .invece di ,, ma sarebbe lo stesso della mia soluzione Jelly.
Zacharý,



4

Desmos , 130 byte

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}}

Il codice sorgente per questo (che è possibile accedere copiando e incollando all'interno e all'esterno di Desmos) non è ottimale quando viene generato utilizzando l'editor Desmos, quindi alcuni byte di spazio bianco sono stati ridotti dove possibile.

Questo definisce una funzione fche non accetta argomenti restituisce pi, calcolata usando la sequenza Gregory a k=9^9 (Non posso confermare che questo sia abbastanza accurato, tuttavia sono convinto che lo sia, può essere reso più accurato con un valore maggiore di k ) quindi 128riporta il risultato in cifre decimali, che, accanto a3. , è la lunghezza del codice sorgente.

Provalo online!


Come si vede realmente il risultato? Vedo solo 3.14159265617, sto guardando nel posto sbagliato; devo premere un pulsante?
Jonathan Allan,

Desmos non stampa in modo predefinito con il numero decimale indicato, ma il valore deve essere accurato.
ATaco,

1
Ciò è deludente poiché la sfida è "stampare ..."
Jonathan Allan,

1
"È necessario il punto decimale nell'output. Se si sceglie di generare l'output tramite il valore restituito, è necessario restituire un numero intero in virgola mobile." che lo rende valido.
ATaco,

Sento che l'intenzione di questa affermazione non era quella di consentire meno precisione ma di garantire un separatore decimale. Intendiamoci, non penso che la tua risposta sia negativa.
Jonathan Allan,




3

Neim , 5 byte

3FBρσ

Spiegazione:

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

Provalo online!


3

APL, 6 byte

10○⍟-1

Prende la parte immaginaria di ln (-1).

Provalo online!


Ehi, bentornato @Uriel! Bello, non stavo pensando a niente del genere (con registri di numeri negativi), bel lavoro!
Zacharý,

@ Zacharý grazie, ho appena lasciato una visita e non ho potuto fare a meno di rispondere a questa domanda: P
Uriel,

2

J , 16 byte

17j15":4*_3 o.1:

Provalo online!

Simile alla risposta VBA. Uscite: 3.141592653589793.


"Non è possibile utilizzare una macro o una costante incorporata per determinare pi." Divertente, è il tuo commento
Leaky Nun,

L'output è di 17 byte, non 16.
ATaco

1
@ATaco esattamente, sono 16 cifre
ASCII il

@LeakyNun no. _3 o.1calcola atan (1). Come forse saprai, sono ben consapevole delle regole.
Conor O'Brien,

2

Math.JS , 17 byte.

     log(-1,e).im

Sono 5 spazi principali

Questo calcola con 15 cifre decimali e lo stampa implicitamente.

Provalo online!


Bene, tecnicamente questo calcola la parte immaginaria di ln(-1), ma poiché è un numero puramente immaginario, equivale a dividere per i.
Zacharý,

2

05AB1E , 11 byte

3•∊&SK•)'.ý

Provalo online!

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.

UTILIZZANDO I BUILT-INS:

05AB1E , 4 byte

žq5£

Provalo online!


3žs non funziona per qualche motivo ...


@ Zacharý mi sono perso qualcosa? Perché quella speciale xD?
Magic Octopus Urn,

È nel mio nome utente e puoi anche aggiungere una spiegazione?
Zacharý,

@ Zacharý HA! Il mio cervello stava attraversando tutte le possibili barzellette divertenti legate al PPCG che poteva essere, rimanendo vuoto. Penso troppo alla merda.
Magic Octopus Urn,

@ Zacharý anche, aggiunto.
Magic Octopus Urn,

Se il MIO avesse un IO implicito, non ci sarebbe modo di battere E3., ora sono arrabbiato con me stesso: p.
Zacharý,

2

ForceLang , 269 byte

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

Link almeno alla lingua su github .
Jonathan Allan,

2

MATL , 9 8 byte

-1X;V9:)

Provalo online!

Spiegazione:

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

Salvato un byte grazie a Luis Mendo!


1

Gelatina , 6 byte

-ÆAær5

Provalo online!

Utilizza un approccio diverso rispetto alle altre risposte di Jelly.

Come?

-ÆAè il coseno inverso di -1(che è pi), ær5recupera la sezione necessaria. Ha funzionato in modo che l'arrotondamento equivalga al troncamento in questo caso



1

Perl 5, 40 byte

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

Richiede l'opzione della riga di comando -pMbignum, conteggiata come 8.

Esempio di utilizzo:

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

Mi scuso per nessun collegamento TIO, non sembra supportare bignum(o un supporto di apertura senza pari ...).


1

MY , 7 byte

’2ō"8↑↵

Provalo online!

Come?

  • , decrementa la parte superiore della pila ( 0viene visualizzata se vuota, creando la pila [-1]). (Stesso simbolo di Jelly)
  • 2, spingere 2.
  • ō, poiché la parte superiore della pila è due, scarta il 2, pop n, quindi premi acos(n)(in radianti, questo dà pi, questo simbolo è ocon un segno negativo sopra di esso. o(per il normale trig) viene da APL).
  • ", pop l'elemento superiore dello stack e spingerlo come una stringa.
  • 8, spingere 8.
  • , aquindi pop b, premere b[:a](Questo è un altro simbolo preso da APL).
  • , emesso con una nuova linea (OUTPUT <- STACK).

Quindi aggiungi un output implicito: P
MD XF,

Mi sto mantenendo fedele alla natura del MIO, potrei fare una versione migliorata con sintassi reale e sicuramente con output implicito
Zacharý,

1

RPL (HP48), 86,5 byte, 87 cifre [Questo conta?]

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

GROB è una parola chiave immagine. I 2 numeri che seguono sono larghezza e altezza. Le cifre esadecimali che seguono sono bitmap. Questo è 1 byte di memoria per ogni 2 cifre più i metadati dell'immagine.

Programma vuoto « » richiede 10 byte. Un comando richiede 2,5 byte. Un float richiede 10,5 byte, ma se è uguale a un numero intero a una cifra, può richiedere 2,5 byte.

HP48 memorizza 4 anziché 8 bit in ogni posizione di memoria, quindi un byte occupa 2 posizioni consecutive (endian basso). Spesso vengono utilizzati blocchi di 20 bit, che richiedono 2,5 byte (non 3).





0

Excel VBA, 16 byte

Funzioni di finestra immediate VBE anonime che non accettano input e output in nessuno degli STDOUT di VBA di Excel

Ogni riga rappresenta una funzione separata che restituisce Pi di lunghezza 16

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



0

TI-BASIC, 7 byte

round(4tan⁻¹(1),6

round(2sin⁻¹(1),6

round(cos⁻¹(-1),6

Queste tre dichiarazioni verranno stampate 3.141593.


Nota: TI-BASIC è un linguaggio tokenizzato. Il conteggio dei caratteri non equivale al conteggio dei byte.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.