Desafio: implemente o ROT-47 em um código que funcione tanto como ele mesmo como a versão do ROT-47.
Pontuação:
Sua pontuação é calculada como uma porcentagem de bytes elegíveis ROT-47 usados no total de ambas as versões do programa divididos pelo total de bytes (todos os caracteres) de ambas as versões .
Um byte qualificado e qualificado para o ROT-47 é qualquer caractere que seria convertido pela cifra ROT-47 que não faz parte de um comentário ou ignorado pelo compilador / intérprete. Por exemplo, qualquer caractere em um programa que não +-<>[],.
seja o cérebro não é considerado um byte usado, e qualquer caractere em um programa C, incluindo e depois //
ou dentro dele, /* */
não é considerado um byte usado. Todos os símbolos especiais no APL não são considerados usados, assim como todos os caracteres em um programa de espaço em branco (desculpe).
Os laços serão quebrados pelo programa com mais votos. Se ainda houver um empate, o programa mais curto vence.
Exemplo de pontuação:
C: 62/64 = 96,875%
Observe que há um espaço neste programa. Obviamente, também, este programa não é uma entrada válida, porque nem compila, mas eu queria mostrar como a pontuação funciona.
main(){printf("Hello World!");}
fonte
>2:?WXLAC:?E7WQw6==@ (@C=5PQXjN
compila?Respostas:
Ruby, 100% (74 caracteres)
Entrada em STDIN, saída em STDOUT.
A segunda linha é a primeira linha ROT-47'd. Portanto, quando ROT-47ing o programa inteiro, torna-se:
Minha estratégia aqui é baseada no fato de que:
V
é'
quando ROT-47'dj
é;
quando ROT-47'dPortanto, se
Vj=...Vj;
transforma em';l...';
, que é essencialmente um não-opVj=...Vj;
pode suportar a execução de qualquer código que você possa fazerVj=0;{INSERT ANY CODE};Vj;
, e isso se tornará'...';
quando o ROT-47'd. Você só precisa ter cuidado para não usarV
esse código, pois isso o quebrará.Lógica semelhante pode ser usada no sentido inverso para produzir a segunda metade (em
jV
vez deVj
)fonte
C - 54,6%
Quando traduzido pelo ROT-47, obtemos
Ambos os programas compilam e o ROT-47-converte o primeiro argumento:
fonte
GolfScript, 120/120 bytes = 100%
ou, no ROT-47:
Sem comentários ou abuso de string. O comando indefinido
LiUUbamUUZadckYLfZfZhcTbbZNYNT
(que é igual ao restante do código no ROT-47) é no-op, mas ainda é executado pelo intérprete, por isso acredito que conta como usado.Este foi realmente um desafio bastante fácil no GolfScript. A principal dificuldade estava em evitar o dígito
1
, que é mapeado pelo ROT-47 no comando GolfScript`
. Os comandos.
,-
,,
,\
,[
,/
,]
e^
também teve de ser evitado, mas que foi bastante fácil, neste caso, uma vez que a tarefa necessária nenhuma construção array.Bônus:
Aqui está um quine do período 2 do GolfScript (ou seja, um programa que imprime um segundo programa que imprime o primeiro programa novamente) em que os dois programas são as transformações ROT-47:
Este programa gera o código ROT-47, produzindo outro programa GolfScript:
que, por sua vez, também gera o código ROT-47, produzindo o programa anterior novamente. Assim, este programa também é uma solução rotativa .
fonte
A
no cérebro, contaria no numerador, mas não no denominador. É a mesma coisa ou diferente?LiUUbamUUZadckYLfZfZhcTbbZNYNT
é um identificador válido no GolfScript e será executado como um comando. No entanto, não é um dos comandos internos , nem é atribuído um significado pelo programa; portanto, por padrão, ele simplesmente não faz nada.python, 96,1% (?)
De acordo com sua definição, as strings contam como código usado?
fonte