Supongamos que tiene 2 idiomas, Ay B. Una cadena ses una semiquina Ay Bsi cumple las siguientes condiciones:
sEs una quine en el lenguajeA.ses un políglota enAyB.- El resultado de ejecutarse
scomo unBprograma es una cadena diferentes', que es una quineB.
El objetivo de este desafío es escribir una semiquina en dos idiomas distintos. Este es el código de golf , por lo que el código más corto gana, con la respuesta más antigua utilizada como un desempate.
Reglas para Quines
Solo se aceptan quines verdaderos . Es decir, debe imprimir el código fuente completo textualmente a STDOUT, sin :
- leyendo su código fuente, directa o indirectamente.
- confiando en un entorno REPL que simplemente evalúa e imprime cada expresión que le da de comer.
- confiando en las características del lenguaje que solo imprimen la fuente en ciertos casos.
- utilizando mensajes de error o STDERR para escribir todo o parte de la línea. (Puede escribir cosas a STDERR o generar advertencias / errores no fatales siempre que STDOUT sea una quine válida y los mensajes de error no formen parte de ella).
Además, su código fuente no debe consistir únicamente en literales (ya sean literales de cadena, literales numéricos, etc.) y / o NOP. Por ejemplo, `12es un políglota en Jelly y Pyth, pero en Jelly es un NOP y un literal numérico, por lo que no es válido.
Cualquier salida no suprimible (como avisos de derechos de autor, mensajes de inicio / apagado o un avance de línea final) puede ignorarse en la salida en aras de la validez de la quine.
Reglas para políglotas
Los dos idiomas utilizados deben ser claramente diferentes. En particular:
- No deben ser versiones diferentes del mismo lenguaje (por ejemplo, Python 2 frente a Python 3).
- No deben ser dialectos diferentes del mismo idioma (p. Ej. Pascal vs. Delphi).
- Un idioma puede no ser un subconjunto del otro (por ejemplo, C vs. C ++ 1 ).
- Un idioma puede no ser un derivado trivial del otro (por ejemplo, Matlab vs Octave 2 , brainfuck vs boolfuck vs TinyBF vs ShadyAsFuck vs todos los otros derivados triviales de brainfuck).
Reglas misceláneas
- No puede aceptar entradas de STDIN (o cualquier otra fuente). Si el idioma elegido debe tomar entrada, entonces la entrada debe estar vacía (cadena vacía, canalizada desde
/dev/null, etc.), o la salida del programa no debe depender de la entrada. - Para este desafío, debe escribir un programa completo. No está permitido solicitar código adicional para ejecutar la solución (como asignar y llamar a una función lambda definida en la solución).
1: Sí, sé que C no es realmente un subconjunto de C ++. Sin embargo, está lo suficientemente cerca como para ser considerado uno a los efectos de los políglotas, así que lo estoy contando para este desafío.
2: Al igual que el punto 1 anterior, aunque Octave técnicamente no es 100% compatible con Matlab, fue diseñado para ser compatible y es lo suficientemente cercano como para permitir que un políglota Matlab / Octave trivialice el desafío.