Sua tarefa é simples: escreva um programa que possa ser executado em dois idiomas. Deve ser um quine normal (imprime seu próprio código-fonte) no idioma 1 e deve ser um quine de erro (gera uma mensagem de erro idêntica ao seu próprio código-fonte) no idioma 2.
Isso é código-golfe , portanto, o menor envio válido (em bytes) vence.
Regras:
- Os idiomas podem ser arbitrariamente semelhantes. Superconjuntos / versões semelhantes / dialetos semelhantes não são permitidos.
- As regras de quine de erro são as mesmas de Make an Error Quine! .
code-golf
quine
polyglot
error-message
Esolanging Fruit
fonte
fonte
Respostas:
Befunge-93 (FBBI) / C (tcc) , 93 + 62 = 155 bytes
Experimente online !: Befunge-93 , C
Agradecemos a randomdude999 por observar que o nome do arquivo requer aspas correspondentes para funcionar.
Deve ser salvo com o nome do arquivo
^"\n>#001p#"<>:#,_@#1-8*3:-1*57+55-1*79*57:-1:*77**278\-1:*57$p
, onde\n
há uma nova linha. Por esse motivo, o TIO for C não funciona exatamente como pretendido. Testado para funcionar no Lubuntu.Explicação (C):
O programa falha ao compilar e o tcc exibe o nome do arquivo como parte de sua mensagem de erro. Existem vários erros de compilação que você pode obter, com base no início do código.
^
no início nos dá umdeclaration expected
, que é curto e não contém caracteres problemáticos como"
. Por outro lado, os desenvolvedores gcc e clang são muito pessimistas e optaram por gerar vários erros de uma só vez, o que não é muito bom, então não estamos usando seus compiladores.Explicação (Befunge-93):
O Befunge é conveniente para quines, pois seu código também pode ser utilizado como dados de caracteres, graças ao
"
comando, que alterna o modo de sequência. No início, realizamos algumas operações inúteis de pilha e, em seguida, emitimos ump
(comando put) que coloca um caractere NUL em (0, 1). Em seguida, refletimos o ponteiro de instruções para a esquerda e começamos a ler tudo como uma string. Isso deve ser feito à esquerda, devido à natureza LIFO da pilha. Depois de envolver e alcançar o"
personagem novamente, a sequência termina. Observe que o caractere NUL substituiu o$
caractere, criando um delimitador no meio da cadeia. Em seguida, inserimos 3 números na pilha e saltamos sobre o NUL (porque infelizmente trava o intérprete quando executado como uma instrução). A parte estática da mensagem de erro deve ser executada aqui. A maioria de seus caracteres é no-ops, mas op
comando consome três argumentos (por isso, pressionamos 3 números, caso contrário parte da string seria comida aqui), e os caracteres:
&1
empurram um total de 4 valores para a pilha, o que neutralizamos. com as instruções ap
e a$
(pop e descarte). Em seguida, é executada alguma aritmética para enviar os códigos ASCII^"\n>#001p#"
e, finalmente, um loop imprime todos os valores na pilha como caracteres até encontrar um caractere NUL e terminar.fonte
/
. Eu não posso testar isso agora.<define>:1: error: missing terminating " character
.Applesoft BASIC / Commodore LCD BASIC , 13 bytes
No Apple] [emulador, pressione a RESETtecla para entrar no modo BÁSICO.
No emulador de LCD Commodore, pressione RightArrowEnterpara entrar no aplicativo BASIC.
Nos dois, não digite
?SYNTAX ERROR
todos os limites, porque eles capitalizam automaticamente.fonte