Esse desafio é semelhante ao Can you Meta Quine?
Um quine é um programa que se produz em STDOUT. Esse desafio é produzir um programa A que, quando executado, produz um programa B no STDOUT. O programa B quando executado produz o programa A em STDOUT. Os programas A e B devem ser escritos (e executados) no mesmo idioma. A questão vinculada restringia A! = B. Isso parecia fácil demais. Portanto, para esta pergunta, insistimos que A e B são antiguidades, usando as seguintes regras:
- Os programas A e B não podem usar os mesmos caracteres, exceto os espaços em branco e os separadores de instrução e caracteres de pontuação.
- Os programas A e B devem conter, pelo menos, um caractere que não é um espaço em branco, nem um separador de instrução, nem um caractere de pontuação.
- Para os fins das regras 1 e 2, o termo 'espaço em branco' exclui qualquer símbolo ou sequência de símbolos que seja uma declaração, operador ou símbolo que seja interpretado (em oposição a um separador). Portanto, no idioma de espaço em branco, não há espaço em branco.
- Um separador de instruções é um elemento sintático convencionalmente usado na linguagem para separar instruções. Isso incluiria a nova linha em python ou o ponto e vírgula em Java, perl ou C.
- Um caractere de pontuação é um caractere ASCII que não é um espaço em branco nem está na classe de caracteres de palavras POSIX (ou seja, um sublinhado não é uma pontuação para esse fim) - ou seja
ispunct()
, retornaria verdadeiro, e não é_
. - O programa A, quando executado, deve produzir um programa (Programa B) em seu STDOUT, que, quando executado por sua vez, produz o Programa A.
- Os programas A e B devem estar na mesma linguagem de programação.
- A linguagem de programação usada deve realmente ser uma linguagem de programação. A menos que você faça um bom caso, sugiro que seja Turing completo.
- Pelo menos um de A e B deve executar pelo menos uma instrução no idioma.
Isso é código de golfe, então a resposta mais curta vence, sendo a pontuação o comprimento do programa A em bytes (ou seja, o comprimento do programa B não é relevante).
A
e sãoa
considerados "caracteres" diferentes?Respostas:
GolfScript, 13 bytes
A saída é
que gera o programa inicial.
A contagem de bytes inclui o LF à direita, pois a saída da saída o conterá.
Experimente online.
Como funciona
GolfScript imprime o conteúdo da pilha após o término.
fonte
Programs A and B may not use any of the same characters, save for whitespace and statement separators, and punctuation characters.
1
e2
é pontuação.Pascal (731 caracteres)
Programa A:
Programa de saídas B:
Programa de saídas A.
fonte
ROT13 ( não está mais competindo após a atualização da regra )
Não tenho certeza se isso conta como um idioma, mas eu certamente não compensou o desafio. Normalmente, respostas para certos utilitários, como também
sed
são aceitos. No entanto, é uma decisão judicial, portanto, se não contar, eu a removerei (há uma meta-discussão em algum lugar sobre o que conta como idioma? Edit: There are now )Ciclos entre
A
eN
:fonte
STDIN
, não executando um programa. Se você está argumentando que é um programa de comprimento zero, que não atende à regra 2. O programa (comsed
) é o que é passadosed -e
. Se isso fosse aceitável,cat
seria um quine, etac
seria um quine e antiquine. No entanto, nada está produzindo a fonte paracat
,tac
ou para esse assuntorot13
.rot13
como uma linguagem de programação não parece satisfazer qualquer definição razoável de 'linguagem de programação' e não está interpretando nada. Vou alterar a questão para tornar isso mais claro.