Una metaquina es un programa que no es una quina, pero cuya salida, cuando se ejecuta como un programa en el mismo lenguaje, es una quine.
El objetivo de este desafío es escribir una metaquina. 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. Tenga en cuenta que solo los programas completos son aceptables, debido a la definición de quine.
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.
- usando 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).
- el código fuente que consiste únicamente en literales (ya sean literales de cadena, literales numéricos, etc.) y / o NOP.
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.
Ejemplo
Ignorando la regla que prohíbe los programas literales y las comillas incorporadas, esto sería una metaquina en serio:
"Q"
El programa consta del literal de cadena única "Q"
, que se imprime implícitamente en la salida. Cuando Q
se ejecuta la salida ( ), es una quine ( Q
es la función de quine incorporada).
T
es una respuesta Pyth fácil de 1 byte.Respuestas:
CJam, 6 bytes
Huellas dactilares
que es la quine más corta adecuada en CJam.
Pruébalo aquí.
Explicación
Ambos programas funcionan exactamente igual, ya que el salto de línea dentro de la línea adecuada no funciona y solo se incluye porque es más costoso eliminarlo de la salida. Cómo funcionan los programas:
Nota al margen
Lo mismo funciona en GolfScript que
que imprime
con un avance de línea final, que a su vez es una de las quines más cortas conocidas.
fuente
Pyth,
1211109 bytesEliminó un byte más gracias a @ Pietu1998.
Esto imprime
que es una quine en Pyth. Puedes probarlo aquí .
fuente
jN B".[9N
o.[9N"jN B
. (jN B"jN B
es otra quine verdadera a las 9: bifurcar la función de identidad y unirse"
.)Fisión , 6 bytes.
Huellas dactilares
Cuál es la quine de fisión más corta . Esto funciona porque los cambios cíclicos del programa dejan su producción completamente inalterada.
Pruébalo en línea!
fuente
Javascript ES6, 21 bytes
Trivial.
fuente
Python 2, 29 bytes
Resulta que la conocida quine de pitón corta se convierte fácilmente en una metaquina :)
Y, dado que no tenemos que preocuparnos por hacer coincidir la nueva línea final, ¡la metaquina es en realidad más corta!
fuente
Japt,
1513 bytes¡Pruébalo en línea!
Este programa genera
que es la quine más corta conocida en Japt.
Cómo funciona
Versión no competitiva, 11 bytes
He acaba de agregar
é
, un comando de "rotar". Entoncesahora es una quine válida.
fuente
Rubí,
2523Genera el clásico ruby HEREdoc quine
Vieja solución
Se genera solo con las comillas simples reemplazadas por comillas dobles.
fuente
JavaScript, 50 bytes
Basado en el quine más corto de JS sin lectura de fuente conocido por el hombre , pero unos 8 bytes más cortos. Huellas dactilares
que es una quine
fuente
Pez (> <>), 17 bytes
Esto funciona utilizando la clásica quine de pescado,
"r00g!;oooooooo|
pero agrega una{
que desplaza toda la pila a la izquierda para que el programa original no sea una quine, pero su salida, cuando se ejecuta, lo es.Salidas:
que es una quine de pescado!
fuente
Gelatina , 3 bytes (no competitiva)
Desafortunadamente, los átomos requeridos son aproximadamente 2 semanas más jóvenes que el desafío.
Metaquina
Pruébalo en línea!
Cómo funciona
Quine
Pruébalo en línea!
Cómo funciona
Como el segundo
Ṙ
imprime los dos primeros caracteres (”Ṙ
), esta es una quine adecuada según nuestra definición.fuente
Octopen-Baru, 22 bytes
** Respuesta no competitiva
Salida de rubí
Que salidas
見
. ¡Qué quine en Octopen-Baru!fuente
7 , 2 bytes, desafío de fechas posteriores al idioma
El programa tiene dos bytes de longitud y puede interpretarse de varias maneras; como un volcado hexadecimal:
como la página de códigos 437:
o, lo más legible, en octal (que 7 usa de forma nativa):
Pruébalo en línea!
El funcionamiento de esto es muy simple: es la quine estándar 7 con un elemento de pila no operativo insertado entre las dos mitades, para que sea diferente (en este contexto,
7
separa los elementos de la pila). (También podría haberlo insertado al principio723723
. No podría haberlo interpretado al final porque los 7 finales son como espacios en blanco finales e ignorados en la codificación empaquetada, por lo que no sería diferente del programa de salida. )Por cierto, este programa es un palíndromo en hexadecimal, pero eso es principalmente una coincidencia.
fuente
Baja carga, 11 bytes
Bastante simple. Se imprime
(:aSS):aSS
, que es la quine de subcarga estándar.fuente
Brachylog , 12 bytes
Pruébalo en línea!
Una de 132 variaciones metaquine misma longitud en la quine traduje de Brachylog v1 de Fatalize quine (no trampa). De hecho, escribí un programa (no golfista y en general tonto) para imprimirlos todos:
Pruébalo en línea!
Hay dos partes de la quine original que podría ser sustituido sin consecuencias:
;?
se puede cambiar agj
ojḍ
, y₁
se puede cambiar a₃
,₅
o₇
. Si los guardamos o cambiamos fuera del literal de cadena de una manera y dentro del literal de cadena de una manera diferente, entonces la salida no coincidirá con la fuente, porque las variantes que estén presentes dentro del literal de cadena se imprimirán tanto dentro como fuera de él. , lo que resulta en una quine que no era la ejecución inicial del programa.;?
,gj
yjḍ
son intercambiables porque los tres emparejan el literal de la cadena consigo mismo: debido al diseño del programa, la variable de entrada?
se unifica con la cadena, por lo que;?
empareja la cadena consigo misma; independientemente del diseño,gj
envuelve la cadena en una lista que luego se concatena a sí misma; asimismojḍ
concatena la cadena a sí misma y luego la divide por la mitad.Los
w
subíndices impares son intercambiables porque, aunque originalmentew
solo podía tomar 0 o 1, con 0 imprimiendo la entradaw
y 1 imprimiendo el primer elemento formateado con el segundo, el inventario de subíndices para no está restringido o establecido en la entrada, y el valor alto El bit codifica si la impresión se realiza de inmediato o si se retrasa hasta el final del programa, por lo que puede estar sujeto a retroceso. (Esos subíndices fueron mi primera y hasta ahora la mayor contribución a Brachylog). Dado que la quine y la metaquina no usan la variable de salida y no retroceden, los cuatro subíndices impares son equivalentes.w
ha convertido en algo que funciona externamente como un campo de bits: el bit bajo del subíndice codifica si es directo o formateado, el bit medio codifica si la variable de salida dew
fuente
Befunge-93, 22 bytes
Simplemente tomé la quine estándar, la puse entre comillas, la invertí (para que se cargue correctamente en la pila) y luego agregué una impresión de pila al final.
Son 8 caracteres agregados a la quine normal, por lo que es muy posible que haya una mejor solución.
fuente
Turtlèd , 52 bytes (sin competencia)
1 menos que la quine original
Funciona de la misma manera, excepto que no tiene un carácter al final, cuando se ejecuta, tendrá un carácter al final, que no afecta a la salida, porque escribe # en un #. Tenga en cuenta que la salida es ligeramente diferente a la quine que hice para el desafío de quine, pero funciona de la misma manera: "escribe #, que es su último carácter, como la quine que hice. Consulte la explicación allí .
fuente
Lua, 45 bytes
El código Quine no es mío.
resultará en
que es una quine Me alegro de que
;
es opcional en Lua.fuente
Pushy , 7 bytes
No competir ya que el lenguaje es posterior al desafío.
Esta es la quine estándar, pero con las nuevas líneas eliminadas. Las nuevas líneas no significan nada en Pushy, pero son el separador estándar del operador de impresión y, por lo tanto, son necesarias para una verdadera quine.
Pruébalo en línea! Esto produce:
Cuál es la quine más breve de Pushy: puede encontrar una explicación sobre cómo funciona aquí .
Alternativamente,
H5-34_"
funciona para el mismo número de bytes.fuente
Espuma , 14 bytes.
Esto imprime la segunda quine de espuma que se puede encontrar aquí . En realidad, esto es más corto porque
.
siempre colocará un espacio entre cada elemento, pero la barra en el tercer token me permite omitir el espacio anterior.fuente
Casco , 6 bytes
Pruébalo en línea!
Imprime el estándar Husk quine
S+s"S+s"
.La quine explicó:
fuente