^"
>#001p#"<>:#,_@#1-8*3:-1*57+55-1*79*57:-1:*77**278\-1:*57$p:1: error: declaration expected
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á um declaration 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 um p
(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 o p
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 a p
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.