Su tarea es simple: escriba un programa que se pueda ejecutar en dos idiomas. Debe ser una quine normal (imprime su propio código fuente) en el idioma 1, y debe ser una quine de error (genera un mensaje de error idéntico a su propio código fuente) en el idioma 2.
Este es el código de golf , por lo que gana el envío válido más corto (en bytes).
Reglas:
- Los idiomas pueden ser arbitrariamente similares. Los superconjuntos / versiones similares / dialectos similares no están prohibidos.
- ¡Las reglas de error quine son las mismas que las de Make a Error Quine! .
code-golf
quine
polyglot
error-message
Fruta Esolanging
fuente
fuente
Respuestas:
Befunge-93 (FBBI) / C (tcc) , 93 + 62 = 155 bytes
¡Pruébelo en línea !: Befunge-93 , C
Gracias a randomdude999 por notar que el nombre de archivo requiere comillas coincidentes para funcionar.
Debe guardarse con el nombre del archivo
^"\n>#001p#"<>:#,_@#1-8*3:-1*57+55-1*79*57:-1:*77**278\-1:*57$p
, donde\n
hay una nueva línea. Debido a esto, el TIO para C no se ejecuta exactamente como se esperaba. Probado para trabajar en Lubuntu.Explicación (C):
El programa no se compila y tcc muestra felizmente el nombre del archivo como parte de su mensaje de error. Hay varios errores de compilación que puede obtener, en función del comienzo del código.
^
al principio nos da undeclaration expected
, que es corto y no contiene caracteres problemáticos como"
. Por otro lado, los desarrolladores de gcc y clang son muy pesimistas y optaron por generar múltiples errores a la vez, lo que no es muy bueno, por lo que no estamos usando sus compiladores.Explicación (Befunge-93):
Befunge es conveniente para quines porque su código también se puede utilizar como datos de caracteres, gracias al
"
comando, que alterna el modo de cadena. Al principio, realizamos algunas operaciones de pila inútiles, luego emitimos unp
(comando de colocación) que coloca un carácter NUL en (0, 1). Luego reflejamos el puntero de instrucciones a la izquierda y comenzamos a leer todo como una cadena. Esto debe hacerse a la izquierda, debido a la naturaleza LIFO de la pila. Después de envolver y alcanzar al"
personaje nuevamente, la cadena termina. Tenga en cuenta que el carácter NUL reemplazó el$
carácter, creando un delimitador a mitad de camino a través de la cadena. Luego empujamos 3 números en la pila y saltamos sobre el NUL (porque desafortunadamente cuelga el intérprete cuando se ejecuta como una instrucción). La parte estática del mensaje de error debe ejecutarse aquí. La mayoría de sus caracteres son no-ops, pero elp
comando consume tres argumentos (de ahí por qué presionamos 3 números, de lo contrario, parte de la cadena se comería aquí), y los caracteres:
&1
empujan un total de 4 valores a la pila, lo que contrarrestamos con unap
y una$
instrucción (pop y descarte). Luego, se realiza algo de aritmética para empujar los códigos ASCII^"\n>#001p#"
y finalmente un bucle imprime todos los valores en la pila como caracteres hasta que encuentra un carácter NUL y termina.fuente
/
. No puedo probar eso yo mismo ahora.<define>:1: error: missing terminating " character
.Applesoft BASIC / Commodore LCD BASIC , 13 bytes
En Apple] [emulador, presione la RESETtecla para ingresar al modo BÁSICO.
En el emulador Commodore LCD, presione RightArrowEnterpara ingresar a la aplicación BÁSICA.
En ambos, no escriba
?SYNTAX ERROR
mayúsculas, ya que automáticamente se capitalizan.fuente