Construa uma meia quina cíclica cardinal


18

Um quine cíclico meio cardinal é um quine cíclico com dois estados, um perpendicular ao outro.

Regras

Você pode decidir qual rotação deseja implementar, no sentido horário ou anti-horário.

Uma vez rotacionado, quaisquer lacunas no seu código devem ser substituídas por espaços para preservar o posicionamento.

Seu programa deve atender à definição da comunidade de um quine .

Isso é e o programa mais curto em cada idioma vence. Seu primeiro programa é usado para sua contagem de bytes.

As brechas padrão são proibidas.

Exemplos

Se o seu programa é:

$_='print';eval

A próxima iteração deve ser:

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

ou

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

que deve gerar o programa original:

$_='print';eval

Se o seu programa é:

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

A próxima iteração deve ser:

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

ou:

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

que deve gerar o programa original:

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



1
@dylnan Não, o outro não pede uma solução mútua.
Martin Ender

1
Tendo visto as respostas até agora, acho que o verdadeiro desafio seria o sentido anti-horário ou uma coluna com mais de uma linha (de modo que a rotação é diferente da transposição ou simplesmente da inserção de novas linhas).
Weijun Zhou 28/02

1
Você pode querer exigir que os dois programas sejam diferentes. Caso contrário, quines que tenham simetria rotacional seriam respostas válidas.
Martin Ender

Respostas:


14

CJam , 19 17 15 bytes

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

Experimente online! Experimente a rotação.

Explicação

{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.
}_~

No código girado, temos feeds de linha em todos os lugares:

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

Como Lynn notou no desafio de quine anterior do Dom, a inserção de feeds de linha ainda forma um quine válido, porque os feeds de linha dentro do bloco serão retidos literalmente de qualquer maneira, e também haverá feeds de linha na "_~"string para fazer com que esses dois caracteres no final apareçam em seus caracteres. linha própria. Portanto {s"_~"+...}_~(com linefeeds) ainda é uma estrutura de quine válida (embora haja um feed de linha adicional no final da string). N*agora insere ainda mais feeds de linha nessa string, mas nós realmente não nos importamos: porque agora ""-há um feed de linha dentro dessa string para remover todos os feeds de linha da representação do programa. Então, acabamos com a forma horizontal do código novamente, desfazendo a rotação.




Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.