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
Dom Hastings
fonte
Relacionado .
Dom Hastings
1
Um pouco relacionado.
Martin Ender
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.

Martin Ender
fonte
5

> <> , 22 bytes

 "2+}>oao#ov*48}}*d3'v

Experimente online!

Rodado no sentido anti-horário:

v
'
3
d
*
}
}
8
4
*
v
o
#
o
a
o
>
}
+
2
"

Experimente online!

O primeiro imprime a linha ao contrário, com as novas linhas intercaladas, e o segundo imprime a linha ao contrário, sem as novas linhas.

Brincadeira
fonte
Isso é muito inteligente!
Esolanging Fruit
Boa maneira de abordá-lo no modo difícil!
Dom Hastings