Escreva um programa que, quando executado em idiomas diferentes, produza uma permutação de bytes diferente do código em cada idioma. O código fonte exato é contado como uma permutação.
Aqui "idioma diferente" pode ter uma versão diferente (Py 2 e Py 3) ou diferentes sinalizadores padrão. É uma saída diferente que força uma versão diferente.
Regras de quine apropriadas se aplicam ao programa em cada idioma. Sua pontuação é calculada como (Language count)^6/(Code length in bytes)
, com uma pontuação maior sendo melhor.
Amostra:
Se o seu código estiver AAB
em execução em três idiomas diferentes ABA
, AAB
e AAB
, sua pontuação será 2^6/3
(apenas uma das duas AAB
conta). Tudo bem se ABA
não tiver sentido.
code-challenge
quine
polyglot
l4m2
fonte
fonte
AAB
impressoAAB
no idioma 1 eABA
no idioma 2, presumo que ele deva ser um quine adequado quando visto como um programa no idioma 1, e não há mais restrições quanto à sua interpretação como um programa de idioma 2. Isso está certo?Respostas:
Befunge-98 , > <> , Gol> <> , fissão , Wumpus , Cardinal , cera de abelha e Alice Pontos: 8 6 /88 = 2978,909
Experimente em Befunge! Experimente em> <>! Experimente em Gol> <>! Experimente em Fissão! Experimente em Wumpus! Experimente no cardeal! Experimente em cera de abelha! Experimente em Alice!
Verificação!
Muitas linguagens 2D, todas abusando de literais de string de quebra automática. A diferença nas saídas é assim:
> <>, Gol> <> e Befunge-98 imprimem o código para trás (exceto para
"
), com os três últimos caracteres em posições diferentesR*"
,O"*
e"R*
respectivamente. A cera de abelha também possui o código ao contrário, mas os três últimos caracteres são intercalados na primeira seção da saída. Alice está principalmente ao contrário, exceto por todos os caracteres de escape ('
,\
e"
) movidos para a frente.Wumpus é o único quine atual, Fission coloca o
"
final do código em vez do começo, e Cardinal coloca o"
intervalo entre0
o5
próximo e o próximo.Prova de diferentes permutações
Explicações:
Befunge-98:
> <> e Gol> <>:
Para ser sincero, não fiz muito aqui. A única diferença entre a execução desses dois idiomas é o
@
comando, que gira os três principais valores da pilha de maneiras diferentes para cada idioma.Fissão:
Wumpus:
Cardeal:
Cera de abelha:
Alice:
fonte
Perl 5 , rubi , JavaScript (cromado), PHP , Python 2 , Python 3 , 1206 bytes, marcar 6 6 /1206 = 38,6865671641791
Valide online Perl, Ruby, PHP, Python 2 e Python 3!
Nota : a execução do programa acima no console do Inspector no Chrome (que parece suportar argumentos posicionais para
console.log
) retorna o programa correto.Explicação
Isso ficou muito mais tempo do que eu esperava e também tornei minha vida um pouco mais difícil, então provavelmente continuarei mexendo nela. Também gostaria de adicionar mais idiomas, mas preciso encontrar algo que não se importe com um
$
sigilo ...Isso é muito bonito um formato Quine padrão onde o cálculo da cotação para uso é um pouco diferente para cada idioma: em Ruby
%q&
é usado, usa PHP'
, JavaScript (Node.js) faz uso de`
e Perl 5 utilizaq(
...)
. Como apenas as aspas mudam, o restante do programa ainda é executável e sintaxe válida em cada idioma. O Python 2 e 3 são agrupados em torno do programa anterior usando o"""
Python 2 e o'''
Python 3.Os programas Perl e Ruby resultantes não são quines padrão,
q
/%q
s adicionais são adicionados a cada iteração, mas o primeiro programa retorna corretamente.Os resultados são:
eval($_=q&
...q&);printf($x=q&
...q&,
...);//#'%`'%`'%`'%`''''''''''''"""
...eval($_=%q&
...%q&);printf($x=%q&
...%q&,
...);//#`'`'`'`'''''''''''''"""
...eval($_=`
...`);printf($x=`
...`,
...);//#%q&'%q&'%q&'%q&'''''''''''''"""
...eval($_='
...');printf($x='
...',
...);//#`q&%`q&%`q&%`q&%''''''''''''"""
......
_="""
...""";
...q="""
...''''''''''''""";print(_.format(Q,_,q[0:-12]+R,"%"))
...
_='''
...''';
...q='''
...""""""""""""''';print(_.format(Q,_,q[0:-12]+R,"%"))
Eu refiz muito isso, espero não ter perdido nada importante aqui. Ainda tenho um caminho a percorrer em qualquer lugar perto da partitura de Jo King ...
fonte
Geleia , e M , 2 6 /14 = 4,57
Experimente em geléia!
Experimente em M!
Ɗṙ@ȮṾ1“Ɗṙ@ȮṾ1”
em geléia1Ɗṙ@ȮṾ“1Ɗṙ@ȮṾ”
em Mfonte
Quine
em PHP?Python 2 e Python 3 , 2 6 /61 = 1,05
Experimente no Python 2!
Experimente no Python 3!
Economizou 12 bytes graças a Jo King.
Impressões em Python 2
Impressões em Python 3
Isso usa o fato de
1/2
estar.5
no Python 3 e0
no Python 2.fonte
Bash / GolfScript, 72 bytes, marcar 2 6 /72 = 8/9 (~ 0,888 ...)
Contém um único espaço à direita nas duas primeiras linhas.
Experimente online no Bash.
Experimente online no GolfScript.
Simplesmente a modificação da resposta de @ jimmy23013 para o desafio " Write a Polyquine " . A modificação feita foi remover o espaço à direita após a terceira linha e mudar
\n"+@n.;
para\n "+@n;
.O Bash imprimirá as linhas 1 e 2 da seguinte maneira:
E o GolfScript imprimirá as linhas 1 e 2 assim:
Aqui, o programa base, a saída Bash e a GolfScript, respectivamente, com as novas linhas substituídas por
\n
:fonte