En esta variante de quine, su programa debe generar su código fuente transpuesto a través de la diagonal desde la parte superior izquierda a la parte inferior derecha. Por ejemplo:
su programa en cuatro lineas
salidas
yof
ono
u u
r r
p l
r i
o n
g e
r s
a
m
El espacio en blanco en la salida no es arbitrario. Los espacios aparecen en dos situaciones: donde hay un espacio en el original (por ejemplo, entre r
y l
en la cuarta columna) y donde es necesario rellenar caracteres (por ejemplo, todos los espacios en la primera columna). Ambos son obligatorios y los espacios no pueden aparecer en ninguna parte más en la salida.
Opcionalmente, se puede ignorar una nueva línea final en la salida. Las nuevas líneas finales en el código fuente no tienen efecto en la salida, y las nuevas líneas principales en el código fuente deben manejarse como en el ejemplo anterior. Suponga que cada carácter que no es una nueva línea tiene una columna de ancho y una fila de alto, aunque para caracteres como tabulación esto puede generar una salida fea.
Su solución debe tener al menos dos líneas con al menos dos caracteres que no sean de nueva línea cada una, y no debe ser su propia transposición (la salida no puede ser idéntica a la fuente).
No se permiten trampas que leen del archivo que contiene su código fuente, extraen datos de una URL, usan las funciones integradas de comillas, etc.
Este es el código de golf: el código más corto en bytes gana.
Respuestas:
CJam, 14 bytes
Pruébalo aquí.
Si bien es más corto, probablemente sea un poco menos interesante que la solución de fisión.
Explicación
fuente
Fisión , 17 bytes
Sigue siendo mi idioma favorito para quines ...
Pruébalo en línea!
Explicación
Esto es bastante similar a la quine de fisión básica . De hecho, si no fuera por la regla "debe tener al menos dos líneas con al menos dos caracteres que no sean de línea nueva cada una", simplemente podría haber transpuesto eso y reemplazarlo
R
porD
. Sin embargo, esa regla hace las cosas un poco más interesantes, porque necesitamos imprimir otra línea.El flujo de control comienza en el
D
con un solo átomo hacia el sur. Como golpea"
, se envolverá e imprimiráSTDOUT, similar a como lo haría en la quine normal.
'!
luego establece la masa del átomo al código de caracteres de!
. El0
es un teletransportador que transporta el átomo a la segunda columna, donde todavía se mueve hacia el sur.Con
+
nosotros incrementamos la masa del átomo al valor de"
.!N!
las impresiones cita, salto de línea, cita. STDOUT ahora se ve así:Después de envolverse, el átomo golpea a otro
"
y ahora imprime la segunda línea al pie de la letra:Ya hemos terminado. El átomo usa el teletransportador una vez más, y aterriza en el
;
que lo destruye y, por lo tanto, termina el programa.Supongo que lo mejor es poner uno
"
en la parte inferior y el otro en la parte superior para que pueda imprimirlos de una vez sin tener que establecer el valor de!
una vez más (porque se sobrescribirá al ingresar nuevamente al modo de cadena).fuente
Javascript ES6, 90 bytes
No esta mal, no está mal.
Explicación
Aquí está el marco estándar de quine:
Para modificar, simplemente dividí la cadena de quine a lo largo de nuevas líneas y caracteres para crear una matriz de caracteres, transpuesta usando 2 funciones de mapa y unida para crear la salida.
fuente
Stax , 23 bytes
Pruébalo en línea!
Adaptación de la
"34bL"34bL
quine, que se basa en una idea utilizada en quines en muchos idiomas.fuente
Befunge-93 , 57 bytes
Esto funciona colocando cada carácter en la primera columna de la pila (excepto la cita en sí), luego imprime cada elemento fuera de la pila. Después de eso, imprime la cita, imprime una nueva línea y luego pasa a la segunda columna. Hace lo mismo sin imprimir una nueva línea.
Puede probarlo en el enlace del título, pero deberá copiar y pegar el código en la ventana usted mismo. Si presiona el botón 'lento', le mostrará el camino que toma el puntero y la pila en ese momento.
fuente
"
única vez, para que pudieras cambiar algo de código de la primera columna a la segunda.Python 2,
917569 bytesPruébalo en línea
Explicación:
Esto utiliza una modificación de la quine estándar:
Después de la modificación:
Esto sería suficiente si se permitiera una sola línea. Luego, agregué dos caracteres a la segunda línea para cumplir con ese requisito. los
#
caracteres en la segunda línea se pueden reemplazar con cualquier cosa, siempre que los cambie también en la primera línea y haga que el programa sea sintácticamente válido.Para imprimirlo correctamente ahora, tengo que imprimir
#
al final de las dos primeras líneas. Así que elimino los dos primeros caracteres de la cadenas
e imprimo con#
antes de imprimirs%s
. Puse uno de los#
al principio des
para guardar algunos bytes eliminando un literal de nueva línea.fuente