Referindo-se aos códigos de caracteres ASCII imprimíveis em decimal, sabemos que de 32 a 126 temos os caracteres imprimíveis com 32 sendo (espaço). Seu desafio é escrever um programa usando apenas caracteres de 32 a 125 (excluindo 126) que, quando executado, imprime seu próprio código-fonte, exceto que cada caractere no código-fonte tem seu código ASCII aumentado em um.
Por exemplo, se o código fonte foi
main(){printf("Hello World");}
sua saída seria
nbjo)*|qsjoug)#Ifmmp!Xpsme#*<~
São proibidos os seguintes:
- Leitura / gravação / uso de arquivos ou armazenamento externo (incluindo a Internet)
- Lendo / ecoando seu próprio código fonte
- Códigos-fonte com menos de 2 caracteres (eles não são divertidos). Deve ser maior ou igual a 2.
Tornando-o um concurso de popularidade, onde, depois de esperar pelo menos duas semanas, a resposta, em qualquer idioma, com as maiores votações positivas ganha, com a menor contagem de caracteres sendo o desempate.
popularity-contest
quine
Ponto fixo
fonte
fonte
~
é realmente péssima para o GolfScript. Aposto que você fez isso de propósito. :-)Respostas:
Python (27 caracteres)
No shell do Python, o seguinte script produzirá o resultado desejado:
Sim! produz:
fonte
Hã? 5 caracteres
Observe que o quinto caractere é um espaço depois
Ntbg
. Esse é o mesmo truque que em uma das minhas respostas anteriores .Ntbg
é um caminho inválido, portanto o intérprete produziráOuch!
Você deve executá-lo assim:fonte
PHP (351)
Tenho certeza de que há uma maneira melhor de fazer isso, pois sou novo no codegolfing, mas aqui está minha solução PHP:
Resultado:
fonte
TI-BASIC, 10
Para a sua calculadora TI-83/84!
Saídas:
fonte
GolfScript, 15 caracteres
Resultado:
Experimente online.
Uma solução bastante direta, baseada na técnica que usei para entrar no desafio "rotating quine" . O único detalhe complicado é que o personagem
~
(ASCII 126) não é permitido pelas regras de desafio, portanto não posso usá-lo para executar meu bloco de código. Felizmente,1*
pode ser usado como sinônimo disso.Explicação:
O bloco de código
{`{)}%"/2+"}
é duplicado pelo.
e a segunda cópia é executada por1*
(tecnicamente, um loop de uma iteração), deixando a outra cópia na pilha. Dentro do bloco de código,`
especifica o bloco de código e{)}%
passa sobre (os códigos ASCII de) seus caracteres, incrementando cada um por um. Por fim,"/2+"
empurra a string literal/2+
(que é.1*
deslocada por um) na pilha. No final do programa, o intérprete GolfScript imprime automaticamente tudo na pilha.Ps. Sim, eu sei que este é um concurso de popularidade e não um código-golfe estrito , mas o que mais eu vou fazer com o GolfScript - arte ASCII? ;-)
fonte
JavaScript, 117 caracteres
Eu sei que não é código de golfe, mas eu joguei de qualquer maneira.
(Não estou lendo meu próprio código-fonte; estou simplesmente usando a função
Function
do objetotoString
.)fonte
Java - 1331 bytes, 618 bytes e 504 bytes
Aqui está em java. O legal é que é bastante legível e flexível. Você pode experimentar alterar a
SHIFT
variável para 0 e será uma solução. Você pode alterá-lo para o valor que desejar, incluindo valores negativos, e o código será alterado de acordo.No entanto, a única desvantagem da classe anterior são as quebras de linha, que não são permitidas na especificação da pergunta (estão fora do intervalo de 32 a 125). Então, eu dou aqui uma versão para golfe que é livre de quebras de linha (e livre de peculiaridades para lidar com elas). Você pode editar o valor da
S
variável para alterar o turno. Isso tem 618 bytes:Certamente, se abandonarmos o ajuste fino do deslocamento e codificarmos o valor do turno, poderemos fazer uma versão completa com 504 bytes:
fonte
Perl 5, 284 caracteres incluem os feeds de linha
Não ter permissão para usar o ~ tornou um pouco mais complicado.
fonte
Python, 99
Resultado:
Isso pode ser reduzido para 75 caracteres , mas imprimirá um novo caractere de linha após a saída, quebrando tecnicamente as regras:
fonte
\x09
) no final, já que uma guia deslocada por um é uma nova linha (\x0A
). Então sua versão abreviada funcionaria com 76 bytes.Stax , 16 bytes
Execute e depure
Adaptação do
"34bL"34bL
quine. Como agora"
se torna o#
que não precisa ser escapado, podemos apenas incluí-lo na string.fonte
Lua - 192
Bem direto,
fonte
C - 156
Apenas o clássico C quine com as modificações necessárias
PS, aparentemente,
sprintf(f,...,f,...)
é um segfault.fonte
JavaScript (276)
Sem usar
.toString()
:fonte
Ruby, 63
Droga, não posso usar um heredoc neste.
O Ruby tem um método nativo
.succ
que faz isso em um caractere, e a impressão sem uma nova linha é mais curta do que a impressão, portanto, isso funciona muito bem.fonte
C, 153
Outra modificação do quine clássico em c ...
fonte
> <>, 16 bytes
Experimente aqui!
Isso é mais ou menos apenas um quine padrão em> <> (sem usar o
g
instrução). As únicas diferenças são que ele não lê seu próprio código-fonte e incrementa cada caractere por 1 antes de produzi-lo.Saídas
*> <> , 15 bytes (não concorrente)
Experimente aqui!
fonte
Tcl , 89 bytes
Experimente online!
Tcl , 89 bytes
Experimente online!
Duas abordagens; o mesmo comprimento de bytes!
fonte
Haskell , 64 bytes
Experimente online!
fonte
Perl 5 , 55 bytes
Experimente online!
fonte
J, 42 bytes
fonte