Escriba un fragmento de código que tome una cadena como entrada y genere un fragmento de código en el mismo idioma que, cuando se ejecute, generará la cadena de entrada inicial.
Debe poder manejar cualquier combinación de caracteres AZ, az y 0-9.
Ejemplo en Python:
import sys
print "print('" + sys.argv[1] + "')"
Dada la entrada de testing123
, volverá print('testing123')
.
Como se trata de código golf , la respuesta más corta en bytes ganará.
code-golf
code-generation
Cuarzo
fuente
fuente
Respuestas:
pl , 0 bytes
Código:
Pruébalo en línea!
Explicación:
Un programa vacío en pl es simplemente un programa cat, que genera exactamente lo mismo que la entrada.
En pl, todos los caracteres ASCII son esencialmente variables, pero cuando la variable no existe (todavía), pl supone que son parte de una cadena.
fuente
cat
intérprete. ;)brainfuck ,
565533 bytes¡1 byte guardado gracias a Gravitron y 22 bytes guardados gracias a Jo King!
Pruébalo en línea!
La salida requiere un intérprete que se ajuste al desbordamiento de memoria y tenga EOI = 0. TIO tiene tal intérprete.
Explicación
--[>+<++++++]
Inicializa la cinta con un sencillo+
.El bucle de entrada:
Otras soluciones
Cada línea es su propia solución.
fuente
+++++++++++++++
con+++[>+++++<-]>
(De las constantes brainfuck )0
's, con un puntero a un valor.+
incrementa el valor,-
disminuye el valor,>
mueve el puntero a la derecha,<
mueve el puntero a la izquierda,,
lee la entrada al puntero como un carácter ASCII,.
emite el valor del puntero como un carácter ASCII,[
inicia un bucle y]
salta al correspondiente[
si el El valor del puntero no lo es0
. Soy malo para explicar, pero así de fácil es Brainfuck. Y bonito golf Conor!Mornington Crescent , 27640 bytes
Pruébalo en línea!
Explicación
Primero, un repaso rápido en Mornington Crescent:
Dado que imprimir cadenas es difícil (consulte el programa "Hello, World!" De Martin Ender Mornington Crescent ), necesitaremos una plantilla simple que pueda usarse para generar cadenas genéricas. Como la duración de los programas generados no importa, me decidí por esto:
Tendremos que generar cada carácter por separado y concatenarlos, ya que el enfoque de subcadena utilizado por Martin es mucho más difícil de implementar en el caso general. Paddington es la estación que realiza la concatenación de cadenas. Cuando llegas a Paddington, sucede lo siguiente:
Este comportamiento se usa para inicializar Paddington en la cadena vacía que se supone que es la entrada.
Vaya a Seven Sisters, que establece el acumulador en 7, y guárdelo en el Banco. El Banco es la única forma de copiar valores: Hammersmith es una copia de solo lectura del valor del Banco.
Divide 7 entre 7 para obtener 1, un divisor de todos los valores ASCII que necesitamos admitir.
Para cada personaje, comience copiando el 1 en Upminster.
Agregue más si es necesario.
Termine yendo a Upminster solo una vez, para mantener el nuevo valor en el acumulador en lugar de almacenarlo nuevamente. Llévelo a Charing Cross para convertir el valor ASCII en un carácter y añádalo a la cadena. Las últimas dos líneas están allí porque he leído mal la especificación, por lo que me detendré aquí y comenzaré mi programa primero.
fuente
Take District Line to Upminster
Gelatina , 1 byte
Woo builtins!
El incorporado
Ṿ
anula la entrada.Pruébalo en línea!
Una más interesante:
Une la cadena "" "" por la entrada.
Pruébalo en línea!
fuente
”“;
por -1.Carbón, 1 byte
Por defecto, una cadena de caracteres ASCII
...
~
simplemente se imprime, por lo que solo queda imprimir la entrada.fuente
C (gcc) ,
89875856 bytes¡Ahorré dos bytes gracias a Jakob!
Pruébalo en línea!
fuente
puts
en el programa impreso para guardar 2 bytes, ¿verdad? ¿O es un problema que añada una nueva línea?Japt , 2 bytes
Pruébalo en línea!
i
es una función que inserta una cadena especificada en un índice especificado en la entrada.Q
es una variable que por defecto está entre comillas"
, y dado que no hay un índice dado, esto por defecto es0
. El resultado final es una comilla insertada al comienzo de la cadena, que Japt finaliza automáticamente cuando se ejecuta.Esto funciona en cadenas que contienen cualquier cosa
"
, excepto ,{
o\
, aunque, por supuesto, la cadena está garantizada por caracteres alfanuméricos, por lo que esto no importa.fuente
Python 2 , 22 bytes
Pruébalo en línea!
fuente
print'print'+`input()`
.input
en Python 2 es equivalente aeval(raw_input())
. Entonces tiene que ser una expresión pitónica para que funcione.MATLAB / Octave , 15 bytes
Pruébalo en línea!
Pasé por alto por completo el hecho de que el programa solo necesita manejar caracteres alfanuméricos o, lo que es más importante, no necesita manejar caracteres de espacio. Esto significa que podemos usar la sintaxis de 'comando', que usa significativamente menos bytes.
MATLAB, 27 bytes
Para completar, aquí hay una versión que puede manejar entradas arbitrarias:
Define una función anónima que toma la cadena
t
y la convierte al programa. Curiosamente, esto no funciona en Octave, que parece tener ideas diferentes de lo quemat2str
debería hacer.fuente
@(t)['disp ',mat2str(t)]
debería funcionar ...?mat2str
agrega comillas, que no son necesarias en la sintaxis de comandos. Tenía la sintaxis de la función combinadamat2str
para manejar espacios en la entrada, pero al releer el desafío, eso no es realmente necesario, reduciendo el bytecount casi a la mitad. ¡Gracias!Befunge-98 (FBBI) ,
211612 bytes-5 bytes gracias a NieDzejkob
-4 bytes gracias a Jo King
Pruébalo en línea!
Salidas
't,'e,'s,'t,@
para una entrada detest
¿Cómo?
Inicialmente, el puntero se mueve hacia el este:
Si no queda más entrada,
~
invierte la dirección del puntero:fuente
Emojicode , 88 bytes
Pruébalo en línea!
Entrada:
Salida:
Salida de script:
fuente
QBIC , 7 bytes
Explicación
Ejecución de la muestra
El resultado es un literal de cadena que contiene la entrada, precedido por un
PRINT
comando.fuente
Lote de 11 bytes
Estoy seguro de que hay que hacerlo más pequeño, pero esto es bastante pequeño.
La caida:
En inglés:
Se le pide al usuario que ingrese una frase principal
echo
. Luego, el usuario puede escribir lo que sea, y el programa termina (por ejemplo,echo hello world!
). Esto nos deja con un programa que, cuando se ejecuta, generará resultadoshello world!
.Sí, se supone que el espacio en blanco debe estar allí
fuente
echo
porción no sería texto repetido en la consola y no salida del programa?echo
con salida estándar. De hecho, (supongo) si la entrada proviene de un archivo o una tubería, todo lo que vería es el aviso. ¿Se ha permitido ese tipo de salida?V, 2 bytes
En Vim,
i
cambia al modo de inserción y permite insertar texto. En este caso, solo insertai
delante del texto de entrada (para crear el segundo programa). V es compatible con Vim, pero agrega un implícito<esc>
al final del programa, así que no necesito preocuparme por eso aquí.fuente
PowerShell, 9 bytes
las comillas simples o dobles en powershell se pueden usar para contener cadenas, pero solo las comillas dobles permiten la expansión variable.
con una entrada de
foo
esta salida,'foo'
que es un programa de PowerShell válidofoo
fuente
Cúbicamente , 87 bytes
Pruébalo en línea!
Un puerto de mi respuesta aquí . Ya existía un desafío para tomar entrada y salida Código cúbico que producía esa entrada, y tenía una respuesta en Cubically así que ... ¿ganancia?
fuente
%6
sy@6
s; ahora pueden llamarse implícitamente. (También puede hacerlo en su respuesta en el hilo del cubificador).D,
9289 bytesPruébalo en línea!
fuente
Python 2 , 17 bytes
Pruébalo en línea!
fuente
1
'1'
a la funciónprint'1'
SOGL V0.12 , 2 bytes
Pruébalo aquí! (espera entrada en la pila, por lo que
,
se agrega para facilitar su uso)$
empuja”
,+
une eso después de la entrada en la pila.fuente
"
.Perl 6 , 19 bytes
Intentalo
Esto debería funcionar para cualquier entrada Unicode en NFC
fuente
8 ,
3437 bytesCódigo
Ejemplo
fuente
PHP , 12 bytes
Pruébalo en línea!
Esto se debe ejecutar desde la línea de comandos con la entrada como argumento de parámetro. Y sí, simplemente genera la cadena de entrada, pero eso es PHP válido: cualquier cosa fuera de los
<?php
?>
delimitadores se genera sin procesar.Aquí está el script producido por la entrada 'testing123' en acción como demostración: ¡ Pruébelo en línea!
fuente
<?php
, fíjate;)MATL , 2 bytes
Pruébalo en línea!
Simplemente envuelve la cadena entre comillas usando
&D
, que es el equivalente de MATL a MATLABmat2str
, una función específicamente hecha para hacer algo que, cuandoeval
'd, dará la matriz original (o en este caso, cadena).El 'programa' resultante es solo la cadena de entrada envuelta entre comillas, que por lo tanto se inserta en la pila y se muestra implícitamente.
fuente
eacal , 38 bytes
Pruébalo en línea!
Simplemente agrega la cadena
put string
a la cadena de memoria, luego agrega el argumento, que se imprime.fuente
Lote, 14 bytes
Funciona también para caracteres especiales si se citan usando
"
s en lugar de^
.fuente
@echo.@echo.%*
sería más correcto? La entrada podría estar potencialmente vacía..
porque nunca está vacío, y utilicé un(
para el segundo caso porque es más confiable que.
, pero gracias por las sugerencias de todos modos.@echo.
s lolLy , 14 bytes
Pruébalo en línea!
Explicación
fuente
05AB1E , 3 bytes
Pruébalo en línea!
Entrada envolvente con comillas.
-1 @Adnan.
fuente
Brain-Flak ,
9268 bytes-22 bytes gracias al asistente de trigo
Incluye +2 para
-cr
Pruébalo en línea!
fuente
Pyth ,
21 bytePruébalo en línea!
Solo da salida a la entrada. Requiere cadenas para estar entre comillas.
-1 byte gracias a KarlKastor
fuente
+\"
? (\x
char literal + implícitoQ
)+N
Zanahoria , 1 byte
Cómo funciona
Una alternativa, también a 1 byte es:
Esto funciona igual que el anterior pero solo toma la primera línea de entrada. Ver como entrada solo será
[A-Za-z0-9]
esto está bien.fuente
01
?