Construir una quina cíclica medio cardinal


18

Una quina cíclica medio cardinal es una quina cíclica con dos estados, uno perpendicular al otro.

Reglas

Puede decidir qué rotación desea implementar, en sentido horario o antihorario.

Una vez girado, cualquier espacio en su código debe reemplazarse con espacios para preservar el posicionamiento.

Su programa debe satisfacer la definición comunitaria de quine .

Este es el por lo que gana el programa más corto en cada idioma. Su primer programa se utiliza para el recuento de bytes.

Las lagunas estándar están prohibidas.

Ejemplos

Si su programa es:

$_='print';eval

Entonces la siguiente iteración debe ser:

$
_
=
'
p
r
i
n
t
'
;
e
v
a
l

o

l
a
v
e
;
'
t
n
i
r
p
'
=
_
$

que debe generar el programa original:

$_='print';eval

Si su programa es:

;$_=';
;$_=';
print

Entonces la siguiente iteración debe ser:

;;
''t
==n
__i
$$r
;;p

o:

p;;
r$$
i__
n==
t''
 ;;

que debe generar el programa original:

;$_=';
;$_=';
print



1
@dylnan No, el otro no pide una quine mutua.
Martin Ender

1
Habiendo visto las respuestas hasta ahora, creo que el verdadero desafío sería el antihorario o un quine con más de una línea (de modo que la rotación sea diferente de la transposición o simplemente insertando nuevas líneas).
Weijun Zhou

1
Es posible que desee exigir que los dos programas sean diferentes. De lo contrario, las quines que tienen simetría rotacional serían respuestas válidas.
Martin Ender

Respuestas:


14

CJam , 19 17 15 bytes

{s"_~"+N*""-}_~

Pruébalo en línea! Prueba la rotación.

Explicación

{s"_~"+  e# Standard quine framework. Puts a string representation of the entire
         e# program on the stack.
  N*     e# Riffle linefeeds into the string, which is effectively a clockwise
         e# rotation by 90°.
  ""-    e# Does nothing.
}_~

En el código rotado, tenemos saltos de línea en todas partes:

{
s
"
_
~
"
+
N
*
"
"
-
}
_
~

Como Lynn notó en el desafío de quine anterior de Dom, insertar saltos de línea en realidad todavía forma un quine válido, porque de todos modos los saltos de línea dentro del bloque se conservarán literalmente, y también habrá saltos de línea en la "_~"cadena para que esos dos caracteres al final aparezcan en su línea propia Entonces {s"_~"+...}_~(con avances de línea) sigue siendo un marco de trabajo válido (aunque habrá un avance de línea adicional al final de la cadena). N*ahora inserta aún más saltos de línea en esa cadena, pero realmente no nos importa: porque ahora ""-tiene un salto de línea dentro de esa cadena, por lo que en realidad elimina todos los saltos de línea de la representación del programa. Entonces terminamos con la forma horizontal del código nuevamente, deshaciendo la rotación.




Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.