Usando dois idiomas de sua escolha, escreva o menor " quine mútuo " possível.
Ou seja, escreva um programa P na linguagem A que emita o código-fonte para um programa Q na linguagem B, de modo que a saída do programa Q seja idêntica ao código-fonte para P.
Os arquivos vazios não contam, nem os programas no estilo "ler o arquivo de origem e imprimi-lo".
Edit: Respostas com P = Q não contam mais.
1
é um quine em vários idiomas. Então você pode dizer que é um programa J que imprime um programa Golfscript que imprime um ...... e assim por diante.Respostas:
> <> (Peixe) e Python - 26 caracteres
Gera este Python
fonte
"
e'
permitir análise de cadeia, por isso, todo o programa é apenas empurrado na pilha e nunca exibido."
ativa a análise de cadeias. Ele lê o programa inteiro e, em seguida, volta para o primeiro"
e executa o programa sozinho na pilhaprint \00gr00g:a9*2+$' tnirp'>o<
após o tempo limite. Tenho certeza de que isso ocorre porqueg
copia o conteúdo real da célula, maso
gera a versão ASCII do caractere e"
não é um código de caractere ASCII válido. ideone.com/kaM0r"
é ASCII 34. Seu intérprete deve estar desligado.Python e Ruby, 39 caracteres
Este fragmento do Python
gera esse snippet do Ruby
que gera o snippet inicial do Python novamente:
Observe que isso é semelhante à resposta de JB .
fonte
C e Perl, 73
Este C:
... gera o seguinte Perl:
... que gera o C de volta.
fonte
main(s){printf(s="print q<main(s){printf(s=%c%s%1$c,34,s);}>",34,s);}
C e C ++, 123 caracteres
Este C (compilável com o gcc v4.3.4):
gera este C ++ (idêntico) (compilável com g ++ 4.3.4, um aviso):
Isso está dentro das regras publicadas. : P E, como o de Ventero, isso se baseia na resposta de JB .
fonte
Java para Python - 219
Java:
Python:
Faz uso do fato de que python permite
'
seqüências de caracteres; isso facilita a gravação da fonte do programa java no programa python.fonte
Python + Piet one-liners: 417 caracteres +
73917107 executando codelsEste script Python produz uma imagem 7393 x 2; o bloco 2x2 mais à direita do qual é um "sentinela" que encerra o programa; então não estou contando isso; e a segunda linha é branca. Provavelmente, eu posso aprofundar ainda mais o código do piet usando cadeias de adição / subtração / multiplicação em vez do ingênuo algoritmo binário ... mas não quero dar uma solução para um futuro quebra-cabeça.
Não vou postar a imagem aqui, por causa de suas dimensões ridículas. Se você quiser vê-lo, execute o código python e canalize a saída para um arquivo .ppm. Em seguida, converta o .ppm em um .gif e execute a saída no Rapapaing . (alternativamente, use um intérprete Piet que não seja da Web e que gere .ppm)
edit: jogou um pouco a piet ao reduzir o peso de Hamming dos nomes das variáveis.
menos golf pre-quine :
Esta é uma versão anterior, antes que eu percebesse que poderia transformá-la em uma linha. É um pouco mais fácil de entender. A função P converte um conjunto de instruções especiais em Piet; e a função p pega um número inteiro e produz uma sequência de instruções para criar esse número inteiro na pilha. Eu só estou usando as instruções
=,+,:,|
, então isso provavelmente poderia ser mais eficiente ... mas eu meio que gosto de ter um compilador Piet completo (das sortes) na fonte.fonte
/Brainf..k/, 6988 bytes
Brainfuck
Experimente online!
Brain-Flak
Experimente online!
O Brain-Flak pode expirar no TIO.
Explicação
Em breve.
fonte
Explanation coming soon
->Jan 27
Ruby e Python (393 + 413 = 806 caracteres)
Ligeira mudança desta minha resposta . Definitivamente poderia ser reduzido, já que codifiquei a entrada sem nenhuma otimização.
Ruby (393 caracteres)
Python (413 caracteres)
fonte
Python 2 a Befunge 98,
9478Mais uma vez, fazendo uso das duas maneiras de fazer strings do Python:
Python:
Befunge 98:
O programa python formata a string para incluir a si mesma e os caracteres para aspas simples e duplas.
O programa Befunge funciona assim:
<
: mova para a esquerda e envolva. Então agora executamos os comandos da direita para a esquerda"
: faça com que todos os caracteres que encontrarmos sejam empurrados para a pilha até encontrarmos outro"
, então pressionamos:Na verdade, é apenas o programa python, revertido por causa da maneira como o Befunge imprime (que é um loop pop + print)
'M
: empurreM
para a pilha.M
também é o número 77, que é um a menos que o número de caracteres enviados à pilha pelos"
s.k
: retire o valor superior da pilha (M
) e execute a próxima operação várias vezes, mais uma.,
: retire o valor superior da pilha e imprima o caracter.@
: finaliza o programa.fonte
Subcarga e Betaload , 16 bytes (não concorrente)
Sob carga:
Betaload:
Betaload é um superconjunto de Underload, portanto, podem ser duas respostas de Underload.
Isso não é competitivo porque o Betaload foi criado após o lançamento deste desafio.
fonte
Clipper e C (111 + 108 = 219 caracteres)
Tosquiadeira (111)
C (108)
Isso é meio que um cop-out porque:
?'foo'
:-)?
e'
s.#include <stdio.h>
, então ele dá um aviso do compiladorfonte
PRINT
comando pode ser abreviado?
bem :-)Python e ~ - ~! - 77 e 81 = 158
Este código Python:
gera isso ~ - ~! código:
Definitivamente pode ser melhorado bastante e adota um monte de outras respostas.
fonte
Javascript e Windows .bat (71 e 81)
e
fonte