Construire un quine cyclique demi-cardinal

18

Un quine cyclique semi-cardinal est un quine cyclique à deux états, l'un perpendiculaire à l'autre.

Règles

Vous pouvez décider quelle rotation vous souhaitez mettre en œuvre, dans le sens horaire ou antihoraire.

Une fois la rotation effectuée, tout espace dans votre code doit être remplacé par des espaces pour préserver le positionnement.

Votre programme doit répondre à la définition communautaire d'un quine .

C'est le donc le programme le plus court dans chaque langue gagne. Votre premier programme est utilisé pour votre nombre d'octets.

Les failles standard sont interdites.

Exemples

Si votre programme est:

$_='print';eval

Ensuite, l'itération suivante doit être soit:

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

ou

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

qui doit sortir le programme d'origine:

$_='print';eval

Si votre programme est:

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

Ensuite, l'itération suivante doit être soit:

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

ou:

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

qui doit sortir le programme d'origine:

;$_=';
;$_=';
print
Dom Hastings
la source
Connexes .
Dom Hastings
1
Assez lié.
Martin Ender
1
@dylnan Non, l'autre ne demande pas de quine mutuel.
Martin Ender
1
Après avoir vu les réponses jusqu'à présent, je pense que le véritable défi serait celui dans le sens inverse des aiguilles d'une montre ou un quine avec plus d'une ligne (de sorte que la rotation est différente de la transposition ou simplement l'insertion de nouvelles lignes).
Weijun Zhou, le
1
Vous voudrez peut-être exiger que les deux programmes soient différents. Sinon, les quines qui se trouvent avoir une symétrie de rotation seraient des réponses valides.
Martin Ender

Réponses:

14

CJam , 19 17 15 octets

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

Essayez-le en ligne! Essayez la rotation.

Explication

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

Dans le code pivoté, nous avons des sauts de ligne partout:

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

Comme Lynn l'a remarqué lors du défi de quine précédent de Dom, l' insertion de sauts de ligne forme en fait toujours une quine valide, car les sauts de ligne à l'intérieur du bloc seront de toute façon conservés textuellement, et il y aura également des sauts de ligne dans la "_~"chaîne pour que ces deux caractères à la fin apparaissent sur leur propre ligne. Donc {s"_~"+...}_~(avec les sauts de ligne) est toujours un framework de quine valide (bien qu'il y aura un saut de ligne supplémentaire à la fin de la chaîne). N*insère maintenant encore plus de sauts de ligne dans cette chaîne, mais nous ne nous en soucions pas vraiment: car a maintenant ""-un saut de ligne à l'intérieur de cette chaîne, donc il supprime en fait tous les sauts de ligne de la représentation du programme. Nous nous retrouvons donc avec la forme horizontale du code à nouveau, annulant la rotation.

Martin Ender
la source
5

> <> , 22 octets

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

Essayez-le en ligne!

Tourné dans le sens inverse des aiguilles d'une montre:

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

Essayez-le en ligne!

Le premier imprime la ligne en sens inverse avec des nouvelles lignes entrecoupées, et le second l'imprime en sens inverse sans les nouvelles lignes.

Jo King
la source
C'est très intelligent!
Esolanging Fruit
Bon passe à l'approche en mode difficile!
Dom Hastings