Objetivo:
Codifique dois programas em que cada um dos programas gera os dois códigos-fonte entrelaçados por caractere como um zíper, um Quine com duas fendas. A saída de um Quine com duas fendas está começando com o primeiro caractere do código-fonte do primeiro programa. Se o código fonte de um dos programas tiver um comprimento menor que o outro, o restante da saída deverá ser preenchido com o restante do código fonte mais longo.
Regras:
- Você pode usar qualquer linguagem de programação para ambos os programas, não sendo necessária a mesma linguagem de programação para ambos.
- Seus programas não devem receber nenhuma entrada de um arquivo, nome de arquivo, rede, outro programa ou qualquer outra coisa.
Critérios obrigatórios:
- Existe um problema, em algum lugar da saída a palavra
QUINE
em maiúsculas deve existir, ininterrupta. - Você precisa indicar quais são as duas linguagens de programação que você está usando. Se você estiver usando a mesma linguagem de programação para ambos, precisará especificar apenas uma linguagem de programação.
- Ambos os programas devem poder executar ou ser interpretados, respectivamente, independentemente do outro programa.
Exemplo:
Tendo este exemplo de código-fonte do programa um :
"QIE"
Tendo este exemplo de código-fonte do programa dois :
"UN"
Em seguida, a saída Quine de abertura dupla válida de ambos os programas deve ser:
""QUINE""
Este é o código-golfe, o menor número de bytes ao somar o comprimento dos dois códigos-fonte e, obviamente, também o comprimento da saída de cada programa, ganha!
A
eXYZ
seria intercalado?AXYZ
?.+
ouz
funcionaRespostas:
CJam,
4947 bytese
ambos imprimem
Experimente on-line: programa 1 , programa 2 , prova de validade
Como eles trabalham
O programa 1 termina aqui e possui uma representação de seqüência de caracteres de todo o código-fonte (que cada caractere repetiu duas vezes), bem como a seqüência de caracteres e # QUINE na pilha.
Programa 2 adicionalmente analisa
e#QUINE
, que é um comentário.Nos dois casos, o CJam imprime as duas seqüências automaticamente, resultando na saída mencionada acima.
fonte
Sério,
465642 bytesHex Dump:
O segundo programa é esse programa exato invertido. Ele contém um caractere invisível, mas a contagem de bytes está correta. Ambos os programas produzem essa sequência palíndrica:
(Por alguma razão, ele exibe o caractere invisível quando o envia no meu terminal. Eu realmente não entendo esse byte de 7F.)
Como funciona:
O restante do programa não é executado.
Então a outra direção:
Neste ponto, agora estamos executando o primeiro programa acima, portanto, a execução continua como descrito lá.
Estou explorando fortemente o fato de que vários comandos não fazem nada para seqüências de caracteres ou pilhas vazias aqui. Também estou explorando o comportamento inesperado de
t
quando há apenas um item na pilha. Não espere que este programa funcione em versões futuras do Seriously.Como a versão on-line do interpretador sério continua sendo quebrada, você deverá fazer o download do interpretador e executá-lo em sua própria máquina para testá-lo.
fonte
GolfScript, 46 bytes
e
ambos imprimem
Experimente on-line: programa 1 , programa 2 , prova de validade
Como funciona
O código fonte do programa 2 analisa adicionalmente
QUINE\n
, que são dois tokens indefinidos.fonte
Perl, 61 + 60 = 121 bytes
Programa 1:
Programa 2:
Pensei em tentar isso em um idioma que não fosse o golfe. Este é basicamente apenas um construtor universal de quine no Perl modificado para dobrar cada caractere antes de imprimi-lo e anexá
QUINE
-lo ao final. Depois, basta colocar um comentário no final do código para compensar o texto adicionado.(Eu escrevi isso sem realmente olhar para as outras respostas. Acontece que seria possível salvar um byte colocando todo o comentário em um programa, mas não tenho certeza se eu deveria apenas copiar descaradamente algoritmos como esse.)
fonte