Saída com o mesmo número de dígitos de pi que o comprimento do código


9

Seu desafio é imprimir xdígitos de pi onde xestá o tamanho do seu código.

Exemplos:

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

Você pode usar para determinar o número de dígitos que você precisa imprimir. Observe que o ponto decimal não conta como um dígito de pi - portanto, o código de comprimento 3 deve ter saída , de comprimento 4.floor(π/10 * 10code_length) / 10code_length - 13.14

Regras:

  • O tamanho do seu código deve ter mais de três caracteres.
  • Você não pode usar nenhuma brecha padrão.
  • Você pode usar qualquer método de saída padrão permitido.
  • Você não pode ler sua fonte para determinar o tamanho do código.
  • Você não pode usar uma constante pi interna.
  • Pi deve ser completamente preciso e não aproximado.
  • O ponto decimal na saída é necessário. Se você optar por imprimir via valor de retorno, deverá retornar um número inteiro de ponto flutuante.
  • O objetivo deste desafio é encontrar a solução mais curta em cada idioma, não o idioma mais curto para a solução. Não tenha medo de postar uma solução em um idioma quando uma solução mais curta for postada no mesmo idioma, desde que sua solução use um método diferente.

... então isso seria válido ou não?
Jonathan Allan

(edit ^ this even (rounding)) #
11137 Jonathan Allan #

“Comprimento do código” ← em bytes ou em caracteres?
Lynn

@ Lynn Bytes, como de costume.
MD XF

É apenas 3permitido?
NoOneIsHere

Respostas:


3

Japonês , 9 4 bytes

Tão curto quanto ele pode ser permitido :)

Inclui um não imprimível (avanço de linha reverso, código 141) após o #.

3.#

Teste-o

No Japt, qualquer caractere a seguir #é convertido em seu código de caractere e anexado a qualquer dígito ou ponto decimal que possa precedê-lo; nesse caso, o3.




6

VBA (Excel), 15 bytes

MsgBox 4*Atn(1)

Saída: 3.14159265358979

Eu acho que isso não é aceitável, pois joguei apenas para ajustar o comprimento do PI. O comprimento não-golfe é de 17 bytes. D:


11
Parece que você ainda não foi bem-vindo, então seja bem-vindo ao site!
MD XF

Oh, obrigado senhor! : D
remoel 15/09

Não é Atnacidental? Eu não tenho certeza se isso é permitido ... perguntando OP
JungHwan Min 15/17

Eu pensei que OP está se referindo apenas ao PI interno. Foi mal.
remoel 15/09

5

Gelatina , 6 bytes

3;⁽4ƒṾ

Experimente online!

Impressões 3,14159 com o separador decimal "europeu" permitido ,,.

Como?

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

11
Essa lista de dígitos parece estranha. Eu acho que há um extra ,'lá.
Jonathan Frech 15/17

11
Você pode fazer -ÆAær5e usar em .vez de ,, mas seria o mesmo que minha solução Jelly.
Zachary



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

O código-fonte para isso (que pode ser acessado copiando e colando dentro e fora do Desmos) não é ideal quando gerado usando o editor do Desmos; portanto, alguns bytes de espaço em branco foram reduzidos sempre que possível.

Isso define uma função fque não aceita argumentos, retorna pi, calculada usando a sequência Gregory para k=9^9 (não posso confirmar se isso é preciso o suficiente, no entanto, acredito que seja, ela pode ser mais precisa com um valor maior de k ) , então coloca o resultado em 128casas decimais, que, ao lado de 3., são o comprimento do código-fonte.

Experimente online!


Como alguém realmente vê o resultado - só vejo 3.14159265617, estou olhando no lugar errado; preciso apertar um botão?
Jonathan Allan

Por padrão, o Desmos não imprime com o máximo de casas decimais fornecido, mas o valor ainda deve ser preciso.
ATaco 15/09

11
Isso é decepcionante, já que o desafio é "imprimir ..."
Jonathan Allan

11
"O ponto decimal na saída é necessário. Se você optar por enviar via valor de retorno, deverá retornar um número inteiro de ponto flutuante." o que torna isso válido.
ATaco 15/09

Sinto que a intenção dessa afirmação não era permitir menos precisão, mas garantir um separador decimal. Veja bem, eu não acho que sua resposta seja ruim.
Jonathan Allan




3

Neim , 5 bytes

3FBρσ

Explicação:

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

Experimente online!


3

APL, 6 bytes

10○⍟-1

Toma a parte imaginária de ln (-1).

Experimente online!


Ei, bem vindo de volta @Uriel! Legal, eu não estava pensando em nada disso (com registros de números negativos), bom trabalho!
Zacharý 18/09/17

@ Zachary graças, caiu apenas uma visita e não poderia ajudar a responder a esta: P
Uriel

2

J , 16 bytes

17j15":4*_3 o.1:

Experimente online!

Semelhante à resposta do VBA. Saídas: 3.141592653589793.


"Você não pode usar uma macro ou uma constante interna para determinar pi." Engraçado, é o seu comentário
Leaky Nun

Sua saída é de 17 bytes, não de 16.
ATaco

11
@ATaco exatamente, tem 16 dígitos
somente ASCII

@LeakyNun isso não acontece. _3 o.1calcula atan (1). Como você deve saber, eu estou bem ciente das regras.
Conor O'Brien

2

Math.JS , 17 bytes.

     log(-1,e).im

São 5 espaços principais

Isso calcula até 15 casas decimais e o imprime implicitamente.

Experimente Online!


Bem, tecnicamente isso calcula a parte imaginária de ln(-1), mas como é um número puramente imaginário, é equivalente a dividir por i.
Zachary

2

05AB1E , 11 bytes

3•∊&SK•)'.ý

Experimente 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.

USANDO BUILT-INS:

05AB1E , 4 bytes

žq5£

Experimente online!


3žs não funciona por algum motivo ...


@ Zacharý, eu perdi alguma coisa? Por que esse xD especial?
Urna Mágica de Polvo

Está no meu nome de usuário e você também pode adicionar uma explicação?
Zachary

@ Zacharý HA! Meu cérebro estava passando por todas as possíveis piadas engraçadas relacionadas ao PPCG, ficando em branco. Eu acho demais.
Urna Mágica de Polvo

@ Zacharý também acrescentou.
Magic Octopus Urn

Se o meu tivesse implicações implícitas, não haveria como vencer E3., estou com raiva de mim mesmo agora: p.
Zachary

2

ForceLang , 269 bytes

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

Link para o idioma no github pelo menos.
Jonathan Allan

2

MATL , 9 8 bytes

-1X;V9:)

Experimente online!

Explicação:

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

Guardado um byte graças a Luis Mendo!


1

Gelatina , 6 bytes

-ÆAær5

Experimente online!

Usa uma abordagem diferente das outras respostas Jelly.

Como?

-ÆAé cosseno inverso de -1(que é pi), ær5recupera a seção necessária. Funcionou tão arredondamento é equivalente a truncamento neste caso



1

Perl 5, 40 bytes

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

Requer a opção de linha de comando -pMbignum , contada como 8.

Uso da amostra:

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

Peço desculpas por nenhum link TIO, ele não parece suportar bignum(ou uma chave de abertura incomparável ...).


1

MEU , 7 bytes

’2ō"8↑↵

Experimente online!

Como?

  • , diminua a parte superior da pilha ( 0aparece se estiver vazia, tornando a pilha[-1] ). (Mesmo símbolo que Jelly)
  • 2empurre 2.
  • ō, como o topo da pilha é dois, descarte o 2, pop ne pressione acos(n)(em radianos, isso fornece pi, este símbolo está ocom um sinal negativo em cima). o(para trigonométricas normais) vem da APL).
  • ", pop o elemento superior da pilha e empurre-o como uma string.
  • 8empurre 8.
  • , pop ae bpressione b[:a](Este é outro símbolo retirado do APL).
  • , imprima com uma nova linha (OUTPUT <- STACK).

Em seguida, adicione saída implícita: P
MD XF

Estou mantendo fiel à natureza do meu, eu poderia fazer uma versão melhorada com sintaxe real, e definitivamente com saída implícita
Zachary

1

RPL (HP48), 86,5 bytes, 87 dígitos [Isso conta?]

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

GROB é uma palavra-chave de imagem. Os 2 números a seguir são largura e altura. Os dígitos hexadecimais a seguir são bitmap. São 1 byte de armazenamento para cada 2 dígitos, mais os metadados da imagem.

Programa vazio « » leva 10 bytes. Um comando ocupa 2,5 bytes. Um float ocupa 10,5 bytes, mas se for igual a um número inteiro de um dígito, pode levar 2,5 bytes.

A HP48 armazena 4 em vez de 8 bits em cada local da memória; portanto, um byte ocupa 2 locais consecutivos (low endian). Geralmente, são usados ​​pedaços de 20 bits e eles levam 2,5 bytes (não 3).





0

Excel VBA, 16 bytes

Funções de janela imediata do VBE anônimo que não recebem entrada nem saída para nenhum dos STDOUTs do Excel VBA

Cada linha representa uma função separada que retorna Pi de comprimento 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

Essas três instruções serão impressas 3.141593.


Nota: TI-BASIC é um idioma tokenizado. Contagem de caracteres não é igual à contagem de bytes.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.