En esta pregunta, le pedí que adivinara un anagrama quine basado en su salida. Sin embargo, parece que todavía no tenemos una pregunta sobre golf para un anagrama quine. Por lo tanto, su tarea será hacer la anagrama de anagrama más corta que pueda.
¿Qué es un anagrama quine?
Un anagrama quine es un programa no vacío que imprime un anagrama de su código fuente, que no sea su fuente original.
Aquí hay un ejemplo de una anagrama quine en Python 2:
print`'`print`*2'*2`
No deberías leer tu propia fuente para este desafío.
code-golf
quine
permutations
Asistente de trigo
fuente
fuente
Respuestas:
Pyth , 2 bytes
Salidas
Pruébalo en línea!
fuente
()
es un quine mucho más corto que el conocidojN*2]"jN*2]
?V , 4 bytes
Salidas:
Pruébalo en línea!
fuente
i2
?2 -> do the next thing twice
i -> insert the following
> <> ,
987 bytesGolfé 1 byte gracias a @WheatWizard al usarlo
!
e incrementarlo para obtener"
Golfé 1 byte gracias a @ ConorO'Brien usando en
#
lugar de<!
Pruébalo en línea!
Salidas
"#o>-1:
.Explicación
fuente
":1+>o<!
Es un poco más corto.":1->o#
Brainfuck, 158 bytes
Pruébalo en línea!
Puede que no sea la versión más corta, pero al menos funciona.
Dato curioso , el código de salida puede ejecutarse (y termina).
Salida
Explicación
fuente
Python 3, 32 bytes
Impresiones
p"r"i"n"t"2(")*p"r"i"n"t"2(")*\n
, salida ordenada:\n""""""""""""(())**22iinnpprrtt
fuente
Rubí , 8 bytes.
Pruébalo en línea!
Esto imprime
Explicación
Esto funciona de manera similar a la respuesta de Python en la pregunta. Hará la cadena y
p*2p*2
luego usar Rubyp
imprimirá la representación de la cadena.fuente
p
lugar deputs
?! Tanto la pérdida de tiempo ...p x
es equivalente aputs x.inspect
JavaScript (ES6),
4032 bytesSin perder el tiempo con Function.toString tampoco. Como beneficio adicional, el código dentro de la cadena casi parece legal. Editar: guardado 8 bytes usando en
+
lugar derepeat(2)
.fuente
*2
lugar de.repeat(2)
, eso no funciona?*
para cadenasKlein , 7 + 6 = 13 bytes
Aquí hay una respuesta basada en la respuesta> <> .
Pruébalo en línea!
Esto salidas
fuente
Japt ,
109 bytesEncontré una mejor manera :-)
Salidas
"Q+2çQ+2ç
. ¡Pruébelo en línea!Explicación
También podría ser
Qi2ç"Qi2ç
, que imprimeQi2çQi2ç"
. Este está más cerca del estándar Japt quine:Pero no creo que haya una forma fácil de poner las comillas en el medio de la cadena para una quine de 9 bytes.
fuente
Q+"+Q² " ²
Rubí, 20 bytes.
Esto salidas
Aprovechando la
%q(...)
sintaxis de cadenas de Ruby , que admite paréntesis anidados.fuente
Retina , 8 bytes
Pruébalo en línea!
Huellas dactilares
Ambos contienen uno
_
, dosn
, dos$
y tres avances de línea.Tenga en cuenta que un avance de línea seguido de casi cualquier otro carácter es una solución trivial, pero es cuestionable si es válido, porque el segundo carácter solo se codifica a sí mismo y el avance de línea realmente no codifica ninguno de los caracteres de salida.
Explicación
Reemplace la entrada vacía con a
_
._
Haga coincidir una cadena vacía, que ocurre antes o después de e inserte un salto de línea ($n
), ann
y a$
. Como nos inserta en primer lugar que_
, esto se suma a cada uno de esos personajes en dos ocasiones, por lo que eln
y$
cuenta para el$n
, y obtenemos dos de los tres avances de línea que necesitamos en la salida. El tercer avance de línea se imprime porque Retina imprime un avance de línea final de forma predeterminada.También podríamos usar
n$n$
en esta etapa, que luego imprimiría:fuente
Python Repl, 4 bytes
Esta es mi primera solución de Code Golf, así que espero que cumpla con las reglas. En el intérprete interactivo Python 2 o 3:
La salida es un anagrama de la entrada.
Otro:
En Python 2:
En Python 3:
Actualización 2017-06-15: Otro más:
fuente
Haskell ,
3839 bytesPruébalo en línea! Salida:
Editar: +1 byte porque anteriormente olvidé la nueva línea implícita de
print
.Alternativa: (Mismo recuento de bytes pero no contiene ASCII-owl)
Pruébalo en línea!
Salida:
fuente
Groovy,
2420 bytes-4 gracias a CalculatorFeline, ¡el espacio en blanco no era necesario después de todo!
Salida:
Explicación:
Cierre anónimo que, cuando se llama, vuelve
{""*""2""}
dos veces (concatenado).fuente
*2
relleno entre comillas:{"""{""*""2""}"""*2}
05AB1E , 10 bytes
Pruébalo en línea!
Salida:
Explicación:
fuente
CJam , 6 bytes
Pruébalo en línea!
Huellas dactilares
Explicación
fuente
Bash, 36 bytes
Esto salidas
(y crea el archivo
f
como un efecto secundario, pero eso está permitido por meta ).Tanto el programa como la salida tienen una nueva línea final.
Proceso de reflexión: pensé que la forma más fácil de generar una cadena dos veces, aparte de asignarla a una variable, era hacer
La cadena necesita ser citada porque contendrá espacios y
<
caracteres, así que tuveque casi funciona, excepto que no genera las comillas. Afortunadamente, Bash admite la concatenación literal de cadenas simplemente colocándolas una al lado de la otra, por lo
"''"
que al agregar a la herejía e insertar""
dentro de la parte de comillas simples se obtiene esta solución.fuente
PHP , 44 bytes
Pruébalo en línea!
fuente
CJam , 8 bytes
Pruébalo en línea!
Explicación
Similar al ejemplo de Python en la pregunta
La salida es
"2*`2*`"
.fuente
Befunge, 11 bytes
Huellas dactilares:
Explicación:
fuente
"
. ¿Cuál es la restricción sobre eso exactamente?"
se considere leer la propia fuente, es solo un literal de cadena.g
Sin embargo, está leyendo descaradamente su propia fuente.":1+>:#,_@!
También funciona pero no es más corto.' 2+"8k,@
para 9 bytesQBIC , 8 bytes
Me acabo de dar cuenta cómo hacer un quine adecuada en QBIC. Para hacer un anagrama, simplemente cambie los caracteres en el literal de cadena. Hay 24 anagramas posibles de esta manera.
fuente
Befunge-98 , 8 bytes
Pruébalo en línea!
fuente
Ohmios , 14 bytes
Pruébalo en línea!
Salida:
Explicación
fuente
JavaScript (ES6), 15 bytes
Salidas:
Retazo:
Mostrar fragmento de código
fuente
Fisión 2 ,
9 86 bytesPruébalo en línea!
Explicación
Se crea un átomo en
R
, que se mueve hacia la derecha. Este átomo se encuentra con un"
, que comienza el modo de impresión. En el modo de impresión, se imprimen todos los caracteres (hasta la coincidencia"
). Esto significa que se imprime'!+OR
en este caso. Luego, todo lo que queda es imprimir"
, lo que se hace con los caracteres restantes.'!
establece la masa del átomo al código de caracteres de!
, y+
incrementa al código de caracteres de"
. Entonces, el código de caracteres es emitido porO
y se destruye el átomo, finalizando el programa.(En realidad, esto es solo una rotación de la quine más corta)
fuente
R"'!+O
, sin probar).Mathematica, 2 bytes
Salida:
Un número que comienza con un punto decimal como
.123
se interpreta como0.123
, por lo que.0
se interpreta como0.0
. Como la parte del número después del punto decimal es cero, Mathematica no lo imprime.fuente
.
codifica en sí mismo, pero no creo que lo0
haga. Un 0 más allá del punto decimal no se puede ver como codificación de un cero inicial antes del punto decimal, este último es un efecto secundario de imprimir un flotante. Entonces, bajo las viejas reglas de quine, no hay problema aquí. (No estoy seguro de si las nuevas reglas han entrado en vigor todavía)JavaScript (otro más), 11 bytes
Llamado con
f()
salidasMostrar fragmento de código
fuente
Python 3, 31 bytes
fuente
Stax ,
84 bytes¡Ejecute y depure en línea!
Un puerto directo de esta respuesta .
Versión anterior, 8 bytes
¡Ejecute y depure en línea!
Versión alternativa con un truco bastante barato que se puede aplicar a quines adecuados en casi cualquier idioma.
¡Ejecute y depure en línea!
Porque
"34bL"34bL
es una quine adecuada en Stax.Otra versión más, que usa solo literales de cadena de un solo carácter.
¡Ejecute y depure en línea!
Explicación
fuente
05AB1E , 13 bytes
Salidas:
Pruébalo en línea!
fuente