Tarea
Se le dará una cadena en la entrada que consta solo de los caracteres de a
a z
, es decir, la entrada coincidirá con la expresión regular /^[a-z]*$/
.
Su salida debe ser un programa completo en el mismo idioma, cuyo código fuente contiene la entrada, y es una quine adecuada.
Ejemplo
Su programa recibiría la entrada abc
y salida:
...abc...
Lo anterior debe ser un programa completo en el mismo lenguaje que no requiere entradas y salidas:
...abc...
es decir, sale por sí mismo.
Puntuación
Este es el código de golf . La respuesta más corta en bytes gana.
Respuestas:
Python 3,
5761 bytesToma una quine básica de Python 3 de aquí y reemplaza el nombre de la variable con la entrada.
Nota: Como se ha señalado por Hyper Neutrino en los comentarios, esto no funciona para palabras clave reservadas comofor
,if
, etc.Al agregar un carácter con el que ninguna de las palabras clave reservadas termina, como
'x'
o cualquier número, lo arregla. (Ørjan Johansen).fuente
"for"
o cualquier otra palabra reservada en Python.'x'
.Jalea , 9 bytes
Generador
Pruébalo en línea!
Cómo funciona
Quine
Si la entrada es
quine
, se genera el siguiente programa.Pruébalo en línea!
Cómo funciona
Esta es la quine Jelly estándar. Primero,
establece el argumento izquierdo y el valor de retorno en la cadena
"quine\nØv"
.Luego,
Ṙ
imprime una representación de cadena (el código del bloque anterior) y devuelve la cadena inalterada.Luego,
v
toma el argumento izquierdo y lo pasa como entrada al programa JellyEn todos los programas de Jelly, solo el enlace principal se ejecuta (definido en la última línea), por lo que la primera línea se ignora por completo.
Finalmente,
Øv
establece el valor de retorno en"Ṙv"
, que se imprime implícitamente cuando finaliza el programa externo.fuente
Haskell , 51 bytes
q
toma una cadena y devuelve una cadena.Pruébalo en línea!
Ejemplo de salida para
putStr$q"test"
:Pruébalo en línea!
fst
para extraer el texto principal.show
para convertir toda la tupla en una cadena.mappend
para combinar las dos funciones anteriores. Convenientementemappend
en dos funciones da una función que aplica cada función a su argumento y combina los resultados conmappend
el tipo de resultado (aquí concatenación de cadenas).fuente
Baja carga , 14 bytes
Pruébalo en línea!
Úselo como
(test)(~aSaS(:^)S):^
, que es en sí mismo una quine.Cómo funciona
(test)
y(~aSaS(:^)S)
son literales de cadena, por lo que se colocan en la pila, con el último en la parte superior.:
duplica la(~aSaS(:^)S)
cadena en la parte superior de la pila, luego^
ejecuta su contenido como un subprograma.~
intercambia los dos elementos superiores de la pila, por lo que ahora(test)
está en la parte superior.a
Envolturas(test)
entre paréntesis adicionales.S
toma la cuerda((test))
en la parte superior de la pila e imprime sin los paréntesis externos (que son solo sintaxis literal).aS
imprime el resto(~aSaS(:^)S)
en la pila de manera similar (con paréntesis).(:^)S
imprime la final:^
.fuente
)(
como entrada, creo.a
-z
.Baja carga , 14 bytes
Pruébalo en línea!
Un enfoque diferente de la otra respuesta de baja carga; en lugar de ser una quine, esto construye una quine. Curiosamente, sale a la misma cantidad de bytes. Esta es una función que toma su argumento de la pila y las salidas a la salida estándar.
Explicación
La función resultante se ve así:
En otras palabras, imprime un literal de cadena que se contiene a sí mismo, seguido de
:^
. Esto es claramente una quine (porque lo que se acaba de imprimir es el mismo que el código que ejecutamos para ejecutarlo en primer lugar).fuente
a
, siempre que no le importe el error de falla de segmentación impreso en stderr cuando contiene la entradaa
.(
ser un carácter que aparece en la entrada, todos los programas necesariamente no harán nada o se bloquearán. Ni siquiera creo que sea específico de TIO; el programa no es válido, pero ya produjo el resultado deseado en el momento en que falla.V , 9 bytes
Pruébalo en línea!
Esta es una modificación de la quine V estándar. , y estoy orgulloso de que solo sea un byte más.
Hexdump:
Explicación:
Luego, la grabación se detiene implícitamente y se reproduce. Esto generará el siguiente resultado:
Como
j
interrumpirá la reproducción de la macro,Hello
nunca se ejecutará nada .fuente
Python 2, 38 bytes
Aunque la entrada solo es necesaria para admitir
a-z
, esto debería funcionar con cualquier entrada de línea única que no contenga bytes NUL.Pruébalo en línea
Para la entrada,
abc
la quine resultante es:Pruébalo en línea
fuente
RProgN 2 , 15 bytes
Explicado
Usando el formato
¿Dónde
%q
está la entrada de Qouted, construye una quine del saborque es una quine RProgN2 estándar,
{']C'.}]C
que, antes de terminar, agrega y destruye la cadena ingresada.Pruébalo en línea!
fuente
Retina , 14 bytes
El recuento de bytes asume la codificación ISO 8859-1.
Pruébalo en línea!
Para la entrada
x
, esto produce:Explicación
La salida es una modificación menor de la quine estándar . Simplemente usamos la expresión regular en
|x
lugar de la expresión regular vacía. Como|
todavía permite (y prioriza) y la coincidencia vacía, la funcionalidad en sí no se ve afectada, y dado quex
que solo contendrá letras, se garantiza que la sintaxis de expresión regular sea válida.Imprimir esto en realidad usa una técnica que es similar a la quine misma. Para evitar la duplicación de la quine, insertamos
¶\(*S1`|
solo una vez en el comienzo de la cadena. Eso es exactamente la mitad del código fuente. Para imprimirlo dos veces sin un salto de línea, utilizamos la configuración\(\
, que envuelve todo el programa en un grupo y hace que tanto la etapa misma como el grupo que lo contiene impriman el resultado sin un salto de línea.fuente
Japt , 14 bytes
¡Pruébalo en línea! Para una entrada de
abc
, salidasque sale por sí mismo. ¡Pruébalo en línea!
Explicación
Esta es una extensión de la línea estándar de capacidad de carga de Japt:
La única diferencia es que agregamos
ª`abc
al final, que en JavaScript es básicamente||"abc"
. Como el resultado de la primera parte es siempre una cadena no vacía (verdad),||
nunca se ejecuta.Hay varias versiones alternativas de la misma longitud:
fuente
CJam ,
1614 bytesPruébalo en línea!
Cómo funciona
Lo que produce algo así
"`_~\"test\";"`_~"test";
.fuente
JavaScript, 21 bytes
fuente
Perl 5 , 35 bytes
Pruébalo en línea!
fuente