No menor número de bytes possível, seu trabalho é escrever um programa que produza:
3.14
Em comemoração a um dia Pi atrasado, é claro! :)
Regras
Você pode fazer o que quiser, mas existem algumas restrições.
- Você não pode usar operações aritméticas em nenhum lugar do seu programa. Isto inclui
+
,-
,*
,/
,%
,^
(exponenciação), etc ... Este também inclui o incremento (geralmente++
), decrementar (--
), operações bit a bit , e qualquer construído em funções que pode ser utilizado como um substituto, tais comosum()
,prod()
,mod()
,double()
,pow()
,sqrt()
,inc()
,dec()
, etc ... (a critério do autor) - Os dígitos
3
,1
e4
pode não aparecer em qualquer lugar em seu código. - Você pode não usar qualquer predefinidos variáveis / constantes que o idioma pode ter como um substituto para
3
,1
, e4
. (Critério do autor) - Você também pode não usar quaisquer funções trigonométricas, como
sin()
,cos()
,tan()
,arcsin()
,arccos()
,arctan()
,sinh()
,cosh()
,tanh()
, etc ... (a critério do autor) - Você não pode usar valores internos ou predefinidos de Pi (ou
3.14
). Não há solicitações da web . - Seu programa não pode exigir nenhum tipo de entrada (além de executá-lo).
3.14
é a única coisa que você pode gerar, ela não pode fazer parte de uma saída maior / maior ..
Vencedora
A resposta com a menor quantidade de bytes em 18 de abril vence. Boa sorte!
Ansioso para respostas inteligentes de mentes inteligentes! Malbolge alguém? : P
^
é o operador de exponenciação, não o operador XOR bit a bit.Respostas:
CJam -
86CJam é uma nova linguagem que estou desenvolvendo, semelhante ao GolfScript - http://sf.net/p/cjam .
Aqui está a explicação:
S
é uma variável pré-inicializada para o espaço ("")`
gera a representação de sequência do último valor - que é exatamente" "
(3 caracteres),
calcula o comprimento da sequência (3)'.
é o caractere de pontoE
é uma variável pré-inicializada para 14; 3, 1 e 4 não são permitidos, mas não diz nada sobre 14 :)Créditos à maçaneta da porta pela ideia de backtick
fonte
E
.PHP - 22 bytes
O Dia do Pi no ano de 1998 foi muito legal!
fonte
n.j
é o formato, e8899e5
é o timestamp Unix de 14 de Março de 1998.,8899e5
. Será correto uma vez por ano.<?=date('w.W',78e5);
01 de abril de 1970 foi uma quarta-feira na semana 14.C, 39
Supõe que a máquina é little-endian e usa o padrão de ponto flutuante IEEE.
O fato engraçado é que,
"P@I@"
na verdade, não está relacionado,PI
mas é equivalente a0x40494050
qual é a representação de3.144550323486328
http://ideone.com/uXVEtl
fonte
dc ,
119 bytesz
Empurre a profundidade atual da pilha (0) para a pilhaE
Pressione E 16 (== 14 10 )[.]
Empurre a corda "."z
Empurre a profundidade atual da pilha (3) para a pilhan
Estale 3 e imprima como númeroP
Pop "." e imprima como charp
Avance 14 e imprima como número com nova linhaResultado:
fonte
dc
é um idioma e intérprete, assim como todos os outros idiomas aqui.dc -e
é apenas a invocação desse intérprete. Eu poderia ter salvo com facilidade o programa de 9 bytes em um arquivo e executadodc pi.dc
. Se esses bytes precisarem ser contados, o mesmo deverá ser aplicado a todos os outros idiomas. por exemplo, incluirpython
em todas as entradas python ouruby golfscript.rb
em todas as entradas golfscript. Acredito que a convenção acordada aqui não deve incluí-las, a menos que opções especiais precisem ser aprovadas.JavaScript ( ES5 ) 20 bytes
Uma variação da solução JS de m.buettner.
Editar: JavaScript ( ES5 ) 18 bytes
Uma variação da idéia do ComFreek de usar a função de decodificação base64.
Editar: Javascript ( ES5 ) 16 bytes
Se o
+
operador unário tiver permissão para converter uma string em um número, ele poderá ser reduzido para:fonte
+
aceito aqui?Haskell, 41 bytes
Quando é o dia do pi na Austrália?
Editado para adicionar: como a outra resposta de Haskell, que gera uma string, também possui aspas. Você pode marcar 33 e estar estritamente dentro das regras, mas é menos divertido:
fonte
p=[2.9,2.92..]!!([0,6..]!!2)
... e nesta..
parece errada. Mas Haskell é fortemente digitado, e o incremento na resposta que dei éChar
nãoNum
e não é aritmético - o que é realmente proibido. Eu precisaria de umfromEnum
para converter os caracteres de volta em números para usá-los dessa maneira. Enfim, a minha consciência está limpa :)Código Morse, 33 bytes
Tecnicamente falando, as informações levam apenas 21 bytes.
fonte
J -
151110 caracteresTornou mais curto, usando o fantástico
i:
.Explicado:
6.28j8
- O número complexo 6.28 + 8i.i:
- É aqui que a mágica acontece.i:
em um número complexo A + Bi, B ≠ 0 obtém B + 1 pontos igualmente espaçados do intervalo [-A, A].6{
- Pegue o elemento no índice 6, que é 3,14.Anteriormente, tivemos o seguinte absurdo:
Explicado por explosão:
fonte
|.'.'2}":22b8d5
, você pode salvar 2 personagens, escolhendo um número que não requer inversão:'.'1}":16bbc6
41X3
porque eu só estou autorizado a modificar os caracteres de índices 0 e 2.Linha de comando do Linux, 35 bytes
Este não está nem perto de ganhar, mas aqui está a diversão:
Saída (após 2 segundos):
fonte
:;ping -t${#?} -qc2 67502862|grep -oP '.\..\d'
. Isso define o TTL para 1, de modo que o ICMP echo saída é abandonada por seu roteador antes que ele nunca chega a lugar nenhum perto da internetping -w2 67502862
. (Ninja editar porque antes eu estava aconselhando w1, quase quebrou as regras.)GolfScript,
181312Versão antiga:
É muito artístico, apenas 3 personagens únicos! ;)
Como funciona:
Aqui está uma explicação da versão de 12 caracteres (muito mais interessante, IMO):
Funciona porque
n`,
é4
, desde quen`
é'"\n"'
. A mesma lógica para'.'`,
. Ele também troca, em vez de criar uma nova string para salvar um caractere (obrigado @algorithmshark).Versão alternativa:
ou
Ou qualquer coisa nessas cordas, realmente. : P
fonte
'.'.`,\.,n`,
trabalhar para salvar um char? Reutilizando o'.'
duplicando e trocando.Resposta do OP.
Mathematica,
212018Isso parece barato ...
ou
Descobri como fazê-lo 18:
Haskell,
494812(48 inclui o novo caractere de linha)
Execute-o chamando a
r
funçãoUsando o método como no Mathematica acima, você pode digitar isso no GHCi:
Java,
8786Scala, 27
Traduzido do Java, conforme sugerido por Score_Under . (Eu realmente não conheço Scala)
fonte
0xe
é esperto. Você se importa se eu melhorar minha resposta JS com isso? ;)[-.86:5][5]
no 11, mas achei que não contava, já que os intervalos são apenas matemática.Bash, 50
As mensagens de ajuda / erro não são recursos externos, são uma saída de comando!
Se alguma coisa é abuso de regras, é isso. Ele usa a coincidência de que a mensagem de ajuda fornecida
STDERR
pelo comando exatotem 314 caracteres (pelo menos no Ubuntu 13.10 com
iputils-121221
). EDIT: Eu aprecio que isso é muito menos portátil do que eu esperava ...A primeira linha pega o comprimento de caractere da mensagem de ajuda e a armazena em uma variável.
Como em minhas outras respostas, as próximas linhas obtêm o número 1 assumindo o status de saída de
false
(não muito portátil, mas isso é código-golfe afinal de contas, !), Depois use esse valor para inserir um ponto decimal na última linhaResultado:
3.14
fonte
info ping6
eu tenho iputils-121221chmod
resposta abusiva para esta pergunta em codegolf.stackexchange.com/a/25724/16402ping6|&wc -c|sed 's/./&./'
Bash + TeX 28 bytes
Se você possui o TeX instalado:
O número da versão do TeX se aproxima assintoticamente de pi à medida que o software melhora. Assim, com o passar do tempo, você pode usar essa implementação (não conforme) para imprimir mais e mais dígitos!
Isso imprimiu 3,1415926 em 2011; a partir de janeiro de 2014, imprimirá 3.14159265.
fonte
tex -v|grep -oP '.\..\d'
para salvar 4 bytes. (O Regex foi roubado da resposta da DigitalTrauma .) De qualquer forma, +1 porque pensei na mesma resposta.JavaScript, 20 bytes
Use-o em um console, para que o resultado seja impresso diretamente. De outra forma,
alert(...)
adicionará outros 7 caracteres.Igual à minha outra resposta, notei que é muito mais curto no JS.
A idéia de usar o
0xe
14 é retirada da submissão do OP com a permissão gentil do OP.fonte
(x='.'+0xE).length+x
Data GNU, 17 bytes
Este só garantiu que funcione este ano, mas não vejo nenhuma limitação nas regras sobre isso ;-)
O
+
é simplesmente indica o início do especificador de formatodate
e não é uma adição aritmética. O mesmo com-
, indicando a data de entrada.Resultado:
fonte
only guaranteed to work this year
É bom .. :)Bash, 17 bytes
Traço, 41 bytes
fonte
Bash
2322Shell (sem expansão do histórico) 20
fonte
seq 2 .06 5|sed -n 20p
também funciona como indicado na resposta do Mathematica do OP.sed 58!d
é um pouco mais curto.!d
com odpkg ...
qual foi o último comando que eu executei que começoud
. Funciona bem,ksh
maszsh
dizzsh: event not found: d
que definitivamente está sendo substituído por algo.pi.sh
e executar o mesmo comandobash pi.sh
, ele funcionará bem.Python, 39 ou 28
47 ou 34(Obrigado, Score_Under por jogar tanto)
+
aqui está o operador de concatenação de strings, não a adição.Copiando o
0xe
truque do OP, aqui estão 28 caracteres com a ajuda do @psalVersões antigas:
fonte
print"%s.%s"%(len('aaa'),0xe)
em 29 bytes. Você também pode fazer o mesmo com o primeiro:print"%s.%s%c"%(len('aaa'),len('a'),52)
em 39 bytes.%s
ainda requerstr
. Obrigado pela dica :)print('%s,%s'%(0xE9,0xE))[2:]
print('%X.%s'%(675,0xE))[2:]
GolfScript, 8 bytes
Este programa contém caracteres ASCII não imprimíveis, portanto, não pode ser colado diretamente aqui. Em vez disso, os pontos de interrogação no código acima devem ser substituídos pelos bytes
03
e0E
em hexadecimal.Por conveniência, aqui está um despejo hexadecimal do programa real. Os usuários Unix / Linux podem executar esse dump hexadecimal
xxd -r
para reconstruir o programa:Explicação:
Os primeiros cinco bytes do programa formam uma literal de seqüência de caracteres entre aspas codificando os três caracteres com os códigos ASCII 3, 14 e 46 (= período ASCII).
(
retira o primeiro caractere da string e coloca seu código ASCII (3) na pilha.\
troca os dois itens do topo da pilha, puxando a string de volta para o topo e o segundo(
corta outro caractere da string, novamente pressionando seu código ASCII (14) na pilha.No final do programa, a pilha (excluindo a sequência de entrada vazia) fica assim:
No final do programa, o comportamento padrão do intérprete GolfScript é restringir e imprimir tudo na pilha, produzindo a saída desejada.
fonte
bash - 39
Todos sabemos que os primeiros dígitos do Pi podem ser calculados a partir da seguinte declaração:
Precisamos de apenas 2 casas decimais, certo?
fonte
Mathematica - 78
fonte
Perl,
1520 bytesfonte
tr + Bash, 17 bytes
Os
-
caracteres aqui não são operadores aritméticos de subtração. Eles indicam alcance.Resultado:
fonte
write()
ligação ou similar. Haverá necessariamente alguma aritmética sob as capas para garantir que o número correto de bytes seja gravado, se não for em nenhum outro lugar. Penso que o objetivo da pergunta é ocultar os cálculos aritméticos / bit a bit necessários.BASH, 57
Isso é mais longo que a maioria das respostas, mas não há nada ruim em tentar.
dá
fonte
c=wc\ -c;echo `$c<<<..`.`$c<<<''``$c<<<...`
C, 36
fonte
main(){printf("%d\b.%d",' ',0xe);}
JavaScript - 23 bytes
Obrigado ao nderscore (veja seus comentários)!
fonte
4
Porém, ele contém ;)btoa()
trabalhar para conseguir3.14
de alguma forma?atob('Mw')+atob('LjE0')
e versão "ilegal" de 14 bytes:atob("My4xNA")
C #
ĺ é o caractere 314, não uma variável ou constante predefinida. o .ToString formata a saída em um dígito, um ponto e mais 2 dígitos.
fonte
GolfScript,
1310Agradecimentos a Ilmari Karonen pela versão melhorada!
x
ey
são caracteres não imprimíveis (consulte http://www.asciitable.com/ para obter mais informações), respectivamenteETX
eSO
, que decodificam para 3 e 14.O que esse código faz deve ser bem claro.
Nota: A regra a seguir
You may not use any predefined variables/constants that your language may have as a replacement for 3, 1, and 4. (Author's discretion)
não está quebrado, pois os caracteres ASCII não são variáveis nem constantes.
fonte
The digits 3, 1, and 4 may not appear anywhere in your code.
,Your program cannot require input of any kind (besides running it).
{}.*.{}.*
, E no interior dos suportes existem 2 caracteres não imprimíveis, respectivamente ( asciitable.com )ETX
eSO
{xy}.*'.'\
(10 caracteres). A minha ainda é mais curta, no entanto. ;-) Mas +1 por me ensinar sobre{ }.*
(e{ }.%
), terei que manter esse truque em mente.Novo no site e ainda não consigo escrever comentários, por isso vou publicá-lo aqui. Basta saber sobre esta solução Javascript:
e esta regra:
3.14 é a única coisa que você pode gerar, não pode fazer parte de uma saída mais longa / maior.
Se eu executar esse código no console do navegador, recebo:
ou usando Node na linha de comando:
mas se eu executar esse código:
Eu recebo:
Usando o Node.js para executar um arquivo .js, posso escrever:
e pegue:
fonte
console
tende a agrupar cadeias entre aspas ao exibi-las ... Você usou,+
mas não aritmeticamente, está sendo usado como concatenador, portanto, é válido ... você poderia ter feito isso menor usandoalert
e nãoconsole.log
... Mas, caso contrário, um grande esforço. Esperamos que você goste aqui ...Mathematica, 56 bytes
Não há muito a dizer. Estou gerando os dígitos como comprimentos de string e os concatenando.
fonte