Saída Pi sem matemática [fechado]


56

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 como sum(), prod(), mod(), double(), pow(), sqrt(), inc(), dec(), etc ... (a critério do autor)
  • Os dígitos 3, 1e 4pode 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, e 4. (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


3
Convém esclarecer que ^é o operador de exponenciação, não o operador XOR bit a bit.
ace_HongKongIndependence

2
Operadores bit a bit são permitidos?
precisa

11
@ProgramFOX Bem, eles podem ser usados ​​como um substituto para operações normais, então, não. Não permitido. Eu vou editar a postagem.
precisa saber é o seguinte

11
Solicitações da Web permitidas?
swish

7
@swish: Eu não usaria solicitações da web, porque isso pertence à lista de "brechas" padrão, que não são mais engraçado
ProgramFOX

Respostas:


25

CJam - 8 6

S`,'.E

CJam é 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 ponto
Eé 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


11
@Brilliand eu aceitaria o uso de E.
precisa saber é o seguinte

6
@ kukac67 Embora ainda não tenha feito um lançamento oficial (disponível hoje), já disponibilizei o código CJam atual via hg. Se você receber o código CJam a partir de 1 dia antes de postar a pergunta, ele executará meu programa corretamente (portanto, não fiz alterações para solucionar esse problema). Mas eu realmente não me importo de qualquer maneira.
Aditsu

33
tempo para desenvolver HQ9 + π ...
Nzall

2
@AnonymousPi Todo mundo é livre para votar nas respostas que escolher. Talvez eles estejam mais impressionados com outras respostas, mesmo que não sejam tão curtos.
Aditsu

2
Por que você tem uma variável pré-inicializada para 14?
User2357112

113

PHP - 22 bytes

<?=date('n.j',8899e5);

O Dia do Pi no ano de 1998 foi muito legal!


13
@ kukac67: n.jé o formato, e 8899e5é o timestamp Unix de 14 de Março de 1998.
ProgramFOX

7
Isso é tão inteligente.
Amal Murali

7
Você pode salvar 7 caracteres removendo ,8899e5. Será correto uma vez por ano.
Damir Kasipovic

11
@Timo Você está certo, mas contém o dígito ilegal "3";).
Blackhole

18
@Blackhole 20 bytes: <?=date('w.W',78e5);01 de abril de 1970 foi uma quarta-feira na semana 14.
primo

92

C, 39

Supõe que a máquina é little-endian e usa o padrão de ponto flutuante IEEE.

main(){printf("%.2f",*(float*)"P@I@");}

O fato engraçado é que, "P@I@"na verdade, não está relacionado, PImas é equivalente a 0x40494050qual é a representação de3.144550323486328

http://ideone.com/uXVEtl


3
Isso é incrível.
precisa saber é

11
Seu código assume punção de tipo em uma máquina little-endian.
Nayuki

@NayukiMinase, sim, você está certo, vale a pena apontar. E também assume o uso do padrão de ponto flutuante IEEE.
Michael M.

E que contém um comportamento indefinido (declaração implícita da função variádica)
rubenvb

5
Esse código realmente assume que a máquina é a máquina de Michael :-).
precisa saber é o seguinte

50

dc , 11 9 bytes

zE[.]znPp
  • z Empurre a profundidade atual da pilha (0) para a pilha
  • EPressione E 16 (== 14 10 )
  • [.] Empurre a corda "."
  • z Empurre a profundidade atual da pilha (3) para a pilha
  • n Estale 3 e imprima como número
  • PPop "." e imprima como char
  • p Avance 14 e imprima como número com nova linha

Resultado:

$ dc <<< zE[.]znPp
3.14
$ 

Então "use input base" é um operador? Cheira a uma operação aritmética, mas provavelmente ainda é válida.
Brilliand

@ Brilliand Não vejo nada na pergunta que proíba conversões básicas. De fato, o OP parece estar incentivando conversões básicas em um comentário aqui codegolf.stackexchange.com/a/25681/11259
Digital Trauma

Eu concordo que é válido; Só estou pensando que, quando a conversão base é um operador e não parte da sintaxe numérica, ela desfoca a linha entre os dados embutidos e uma operação aritmética.
Brilliand

Eu acho que isso deve ser de 15 bytes?
Usuário registrado

9
@AdityaPatil Por quê? 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 executado dc pi.dc. Se esses bytes precisarem ser contados, o mesmo deverá ser aplicado a todos os outros idiomas. por exemplo, incluir python em todas as entradas python ou ruby 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.
Digital Trauma

42

JavaScript ( ES5 ) 20 bytes

Uma variação da solução JS de m.buettner.

(x='.'+0xE).length+x

Editar: JavaScript ( ES5 ) 18 bytes

Uma variação da idéia do ComFreek de usar a função de decodificação base64.

atob('Mw')+'.'+0xE

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:

+atob('MDMuMTQ')

UAU! Isso é realmente inteligente!
precisa saber é o seguinte

9
@NateEldredge Esta é uma concatenação de strings, não aritmética.
precisa saber é o seguinte

é +aceito aqui?
phuclv

11
Acho que a solução Javascript é a mais elegante e estava prestes a postar a minha até perceber que tinha um '4': atob ('My4xNA =='), lol.
Rdev5

11
@ Dennis você está certo, ainda está lá. Está lá mesmo se eu copiar + colar o resultado do console. Não estou feliz com isso, então voltarei à solução de 16 bytes.
nderscore

39

Haskell, 41 bytes

Quando é o dia do pi na Austrália?

p=(\(a:n:y:t:i:m:e:_)->[m,a,t,e])['.'..]

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:

p=putStr$map([','..]!!)[7,2,5,8]

Haha, uau. Isso é bom!
Ry-

Você pode explicar por que isso funciona?
yhager

5
Eu gosto muito deste, +1. Mas acho que tecnicamente ".." está invocando o operador de incremento, o que foi proibido. (Na verdade upvoting também invoca uma operação de incremento, por isso deve ser proibido, bem ;-)
Marc van Leeuwen

Na verdade, eu pensei sobre isso - eu tinha uma resposta ainda mais curta: p=[2.9,2.92..]!!([0,6..]!!2)... e nesta ..parece errada. Mas Haskell é fortemente digitado, e o incremento na resposta que dei é Charnão Nume não é aritmético - o que é realmente proibido. Eu precisaria de um fromEnumpara converter os caracteres de volta em números para usá-los dessa maneira. Enfim, a minha consciência está limpa :)
bazzargh

6
@yhager: ['.' ..] é a sequência de caracteres "./0123456 ..." (etc). (a: n: y: t: i: m: e: _) é uma correspondência de padrões que extrai os 7 primeiros caracteres, [m, a, t, e] reordena 4 deles em "3,14". Sabendo que é isso que você quer fazer, é uma questão de pesquisar no dicionário para encontrar palavras com a estrutura correta. O que eu fiz ... por exemplo, outro par era o "traje mais feio". Então você venha com uma piada :)
bazzargh

32

Código Morse, 33 bytes

morse -d ...-- .-.-.- .---- ....-

Tecnicamente falando, as informações levam apenas 21 bytes.


11
Definitivamente precisamos de mais soluções de golfe em código morse aqui ...
deixou de vez counterclockwis

26
Tecnicamente falando, eu diria 21 bits , não bytes #
Michael M.

14
@ Michael, já que o código Morse pode ser um ponto, traço ou espaço, não exigiria mais de 1 bit para armazenar uma operação?
smcg

5
@smcg ButSpacesAreForWeakPeopleWhoCan'tReadThingsLikeThis
Cole Johnson

8
Por mais que eu goste de código morse (e, portanto, desta solução) - mas não é isso contra a regra 3: "Você não pode usar variáveis ​​/ constantes predefinidas que seu idioma possa ter como substituto de 3, 1 e 4." ou até a regra 2: "Os dígitos 3, 1 e 4 podem não aparecer em nenhum lugar do seu código."?
precisa saber é o seguinte

27

J - 15 11 10 caracteres

Tornou mais curto, usando o fantástico i:.

6{i:6.28j8

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:

|.'.'2}":22b8d5

Explicado por explosão:

         22b8d5  NB. 8d5 in base 22 = 4163
       ":        NB. convert to string
  '.'2}          NB. change character at index 2 to '.'
|.               NB. reverse to make '3.14'

Em vez de |.'.'2}":22b8d5, você pode salvar 2 personagens, escolhendo um número que não requer inversão:'.'1}":16bbc6
rationalis

3
@epicwisdom Os dígitos 3, 1 e 4 são banidos. Eu tenho que usar um número na forma 41X3porque eu só estou autorizado a modificar os caracteres de índices 0 e 2.
algorithmshark

20

Linha de comando do Linux, 35 bytes

Este não está nem perto de ganhar, mas aqui está a diversão:

ping -w2 67502862|grep -oP '.\..\d'

Saída (após 2 segundos):

$ ping -w2 67502862|grep -oP '.\..\d'
3.14
$

Cite a pergunta: "Não há solicitações da web".
Maçaneta

9
@Doorknob ICMP echo request! = Solicitação da web. Independentemente disso, o ping é 4.6.3.14, a partir do qual eu recebo nenhuma resposta, então não é como se eu estou recebendo todas as informações de volta útil a partir da internet
Trauma Digital

10
@ Doorknob Mas se isso ainda te incomoda, podemos fazer isso :;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 internet
Digital Trauma

11
Você pode economizar 9 s usando ping -w2 67502862. (Ninja editar porque antes eu estava aconselhando w1, quase quebrou as regras.)
lolesque

Obrigado @lolesque. Não melhorar a pontuação de golfe embora ;-)
Trauma Digital

16

GolfScript, 18 13 12

'.'.`,\.,n`,

Versão antiga:

'...','.'.,'....',

É muito artístico, apenas 3 personagens únicos! ;)

Como funciona:

# cmd   # stack
'...',  # 3
'.'.    # 3 '.' '.'
,       # 3 '.' 1
'....', # 3 '.' 1 4

Aqui está uma explicação da versão de 12 caracteres (muito mais interessante, IMO):

'.' # '.'
.`, # '.' 3
\.  # 3 '.' '.'
,   # 3 '.' 1
n`, # 3 '.' 1 4

Funciona porque n`,é 4, desde que n`é '"\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:

'pi ','.'.,'day!',

ou

'Hi ','.'.,'PPCG',

Ou qualquer coisa nessas cordas, realmente. : P


Apenas 3 caracteres diferentes, cool :)
aditsu

Iria '.'.`,\.,n`,trabalhar para salvar um char? Reutilizando o '.'duplicando e trocando.
algorithmshark

@algorithmshark Sim, obrigado!
Maçaneta

Isso é muito inteligente! +1
VisioN

este se parece com a versão do código morse
pwned

14

Resposta do OP.

Mathematica, 21 20 18

Isso parece barato ...

Range[2,5,.06][[20]]

ou

Range[2,5,.02][[58]]

Descobri como fazê-lo 18:

Range[-.86,5][[5]]

Haskell, 49 48 12

(48 inclui o novo caractere de linha)

p=[-6..]
r=concat$show(p!!9):".":(show$p!!20):[]

Execute-o chamando a rfunção

Usando o método como no Mathematica acima, você pode digitar isso no GHCi:

[-2.86..]!!6

Java, 87 86

class P{public static void main(String[]a){System.out.print("tri".length()+"."+0xe);}}

Scala, 27

Traduzido do Java, conforme sugerido por Score_Under . (Eu realmente não conheço Scala)

print("tri".length+"."+0xe)

Oh, 0xeé esperto. Você se importa se eu melhorar minha resposta JS com isso? ;)
Martin Ender

A maioria dos java pode ser convertida diretamente em scala, que geralmente é mais curta se você realmente deseja economizar nos bytes - se você estiver usando-o como um script, a coisa toda é apenas: print ("tri" .length + "." 0xe)
Score_Under

Sim, eu pensei na mesma coisa, que é mais curta em Julia que [-.86:5][5]no 11, mas achei que não contava, já que os intervalos são apenas matemática.
precisa saber é

12

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 STDERRpelo comando exato

ping6

tem 314 caracteres (pelo menos no Ubuntu 13.10 com iputils-121221). EDIT: Eu aprecio que isso é muito menos portátil do que eu esperava ...

m=`ping6|&wc -c`
false
o=$?
echo ${m:0:o}.${m:o:2}

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 é afinal de contas, !), Depois use esse valor para inserir um ponto decimal na última linha

Resultado: 3.14


você senhor é gênio
Joshua

11
Ah, "2.81" no Ubuntu 12.04 (iputils-101006). +1 do mesmo jeito ;-)
Digital Trauma

@DigitalTrauma de acordo com info ping6eu tenho iputils-121221

verifique também minha chmodresposta abusiva para esta pergunta em codegolf.stackexchange.com/a/25724/16402

2
ainda mais curto:ping6|&wc -c|sed 's/./&./'
malkaroee

11

Bash + TeX 28 bytes

Se você possui o TeX instalado:

tex -v|head -c8|cut -d\  -f2

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!

tex -v|cut -d\  -f2 | head -n1

Isso imprimiu 3,1415926 em 2011; a partir de janeiro de 2014, imprimirá 3.14159265.


Eu amo este!
gniourf_gniourf

Você pode usar 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.
ace_HongKongIndependence

10

JavaScript, 20 bytes

'...'.length+'.'+0xe

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 0xe14 é retirada da submissão do OP com a permissão gentil do OP.


11
Sua multa, você pode usá-lo :)
kukac67

11
Solução alternativa de 20 bytes:(x='.'+0xE).length+x
nderscore

@nderscore é uma ideia muito legal. Se você postar isso como uma outra resposta, você vai ter o meu upovote;)
Martin Ender

10

Data GNU, 17 bytes

date -d2/5 +%u.%y

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 formato datee não é uma adição aritmética. O mesmo com -, indicando a data de entrada.

Resultado:

$ date -d2/5 +%u.%y
3.14
$

only guaranteed to work this yearÉ bom .. :)
kukac67

10

Bash, 17 bytes

tr 0 .<<<$[62#MC]

Traço, 41 bytes

perl -pechomp,s/./$./<<$


..










.

O Bash reclamaria em voz alta sobre o marcador final ausente enquanto o Dash não, portanto, uma solução Bash sem mensagens de erro exigiria dois bytes extras.
Dennis

+1 também. Acho que o @TheDoctor esqueceu de clicar no botão de votação?
Digital Trauma

@DigitalTrauma oops ... fixed
TheDoctor

7

Bash 23 22

seq 2 .02 5|sed -n 58p

Shell (sem expansão do histórico) 20

seq 2 .02 5|sed 58!d

seq 2 .06 5|sed -n 20ptambém funciona como indicado na resposta do Mathematica do OP.
user80551

sed 58!dé um pouco mais curto.
Dennis

@ Dennis Estranho, substitutos do terminal gnome !dcom o dpkg ...qual foi o último comando que eu executei que começou d. Funciona bem, kshmas zshdiz zsh: event not found: dque definitivamente está sendo substituído por algo.
user80551

Isso é por causa da expansão da história de Bash . Ele está desativado por padrão para scripts; portanto, se você salvar pi.she executar o mesmo comando bash pi.sh, ele funcionará bem.
1189 Dennis

6

Python, 39 ou 28 47 ou 34

(Obrigado, Score_Under por jogar tanto)

print"%s.%s%c"%(len('aaa'),len('a'),52)

+ aqui está o operador de concatenação de strings, não a adição.

Copiando o 0xetruque do OP, aqui estão 28 caracteres com a ajuda do @psal

print('%X.%s'%(675,0xE))[2:]

Versões antigas:

print str(len('aaa'))+'.'+str(len('a'))+chr(52)

print str(len('aaa'))+'.'+str(0xe)

print"%s.%s"%(len('aaa'),0xe)

O segundo pode ser reduzido, removendo o espaço após a impressão e usando o formato "% s" em vez de str (). cf 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.
Score_Und

@Score_Under Oh, eu pensei que o uso %sainda requer str. Obrigado pela dica :)
ace_HongKongIndependence

11
outra solução de 29 bytes:print('%s,%s'%(0xE9,0xE))[2:]
onionpsy

11
... e em 28 bytes:print('%X.%s'%(675,0xE))[2:]
onionpsy 17/04

5

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 03e 0Eem hexadecimal.

Por conveniência, aqui está um despejo hexadecimal do programa real. Os usuários Unix / Linux podem executar esse dump hexadecimal xxd -rpara reconstruir o programa:

0000000: 2703 0e2e 2728 5c28                      '...'(\(

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:

3 "." 14

No final do programa, o comportamento padrão do intérprete GolfScript é restringir e imprimir tudo na pilha, produzindo a saída desejada.


11
Snap! Eu tive exatamente a mesma idéia , apenas 12 horas tarde demais. Acho que devo ler a página 2 antes de postar ... Ah, bem, revertendo +1 para você.
Dennis

5

bash - 39

Todos sabemos que os primeiros dígitos do Pi podem ser calculados a partir da seguinte declaração:

Posso tomar um grande recipiente de café

Precisamos de apenas 2 casas decimais, certo?

m=May
i=I
h=have
echo ${#m}.${#i}${#h}

4

Mathematica - 78

DateList["March"<>ToString@FromDigits@"E"]~DateString~{"MonthShort",".","Day"}

No espírito do Pi Day! : D
kukac67

4

Perl, 15 20 bytes

print 05706=~s/0/./r
print 0xbc6=~s/0/./r

PI__ não é uma constante relacionada ao Pi?
Llamageddon

Não é uma constante. São duas strings sendo editadas em XOR.
nderscore

Operadores bit a bit não são permitidos.
precisa saber é o seguinte

Oh, eles não são. Bem, lá está minha solução hipotética. Dito isto, se operadores bit a bit não forem permitidos, ainda há muito mais a fazer além de contar comprimentos de strings?
Llamageddon

Existem várias respostas que usam números em diferentes bases.
precisa saber é o seguinte

4

tr + Bash, 17 bytes

tr a-j 0-9<<<d.be

Os -caracteres aqui não são operadores aritméticos de subtração. Eles indicam alcance.

Resultado:

$ tr a-j 0-9<<<d.be
3.14
$

Inteligente, embora a tradução de um personagem seja realmente aritmética oculta.
Pierre Arlaud

@ArlaudPierre True, embora eu afirme que praticamente todas as soluções aqui escondem a aritmética de uma maneira ou de outra. Se você observar as instruções reais da máquina executadas para qualquer uma dessas respostas, acho que todas têm algumas instruções aritméticas ou bit a bit, que são proibidas de uso explícito pela pergunta.
Digital Trauma

@ArlaudPierre A questão requer que a string "3.14" seja impressa. Independentemente do idioma, em algum lugar oculto, isso degenerará em uma 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.
Digital Trauma

4

BASH, 57

Isso é mais longo que a maioria das respostas, mas não há nada ruim em tentar.

f=`echo aaaaaaaaaaaaa|wc -c`;e=`echo aa|wc -c`;echo $e.$f

3.14

3
Desculpe por re-jogar as respostas de todos: P, Na mesma linha que eu encontrei:c=wc\ -c;echo `$c<<<..`.`$c<<<''``$c<<<...`
Score_Under

4

C, 36

main(){printf("%d\b.%o\b",' ','`');}

11
Se nós combiná-lo com a minha resposta, podemos salvar 2 bytes para obter uma pontuação de 34 :main(){printf("%d\b.%d",' ',0xe);}
vsz

3

JavaScript - 23 bytes

atob('Mw')+atob('LjE0')

Obrigado ao nderscore (veja seus comentários)!


Bom: DI nem sabia disso
kukac67

4Porém, ele contém ;)
nderscore

@nderscore Ah! Você está certo! Iria btoa()trabalhar para conseguir 3.14de alguma forma?
precisa saber é o seguinte

@ kukac67 O conjunto de caracteres base64 não contém um ponto final :(
nderscore 10/04

3
Versão "legal" de 23 bytes: atob('Mw')+atob('LjE0')e versão "ilegal" de 14 bytes:atob("My4xNA")
nderscore 10/14

3

C #

 ((int)'ĺ').ToString("#\\.##");

ĺ é 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.


Bom, mas atualmente não sai, e não é compilável.
Rudi Kershaw

Console.Write (((int) 'ĺ'). ToString ("# \\. ##"));
Grax32

3

GolfScript, 13 10

{xy}.*'.'\

Agradecimentos a Ilmari Karonen pela versão melhorada!

xe ysão caracteres não imprimíveis (consulte http://www.asciitable.com/ para obter mais informações), respectivamente ETXeSO , 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.


The digits 3, 1, and 4 may not appear anywhere in your code.,Your program cannot require input of any kind (besides running it).
user80551

Os dígitos não aparecem em lugar nenhum. Não há entrada.
Vereos

E seu código final é ...?
precisa saber é o seguinte

{}.*.{}.*, E no interior dos suportes existem 2 caracteres não imprimíveis, respectivamente ( asciitable.com ) ETXeSO
Vereos

2
Você pode reduzi-lo para {xy}.*'.'\ (10 caracteres). A minha ainda é mais curta, no entanto. ;-) Mas +1 por me ensinar sobre { }.*(e { }.%), terei que manter esse truque em mente.
Ilmari Karonen

3

Novo no site e ainda não consigo escrever comentários, por isso vou publicá-lo aqui. Basta saber sobre esta solução Javascript:

'...'.length+'.'+0xe

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:

"3.14"

ou usando Node na linha de comando:

'3.14'

mas se eu executar esse código:

parseFloat('...'.length+'.'+0xe)

Eu recebo:

3.14

Usando o Node.js para executar um arquivo .js, posso escrever:

console.log('...'.length+'.'+0xe)

e pegue:

3.14

11
Nunca houve uma limitação em que tipo o valor resultante pode ser. Portanto, string ou número não importa. As aspas ao redor da string não são consideradas parte da saída.
Nscorecore 14/04

Bem-vindo ao CodeGolf e quebra-cabeças de programação @RobertMunn! Essa resposta é válida, pois obedece a todas as regras ... Lembre-se de que consoletende 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ão console.log... Mas, caso contrário, um grande esforço. Esperamos que você goste aqui ...
Wally West

Isso é muito legal! Você deve considerar adicionar o nome da contagem de linguagem e de bytes (por exemplo, Javascript, 20)
Vereos

11
Obrigado Ace, estou apenas aprendendo as regras aqui. Como não pude deixar um comentário, publiquei separadamente, acho que isso foi mais um esclarecimento sobre o tipo de publicação de regras, que nderscore e WallyWest esclareceram para mim. Agradeço a paciência de todos com um newb.
Robert Munn

2

Mathematica, 56 bytes

(l=ToString@StringLength@#&)@"..."<>"."<>l@"."<>l@"...."

Não há muito a dizer. Estou gerando os dígitos como comprimentos de string e os concatenando.

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.