Bauen Sie ein halbes zyklisches Kardinalquin


18

Ein halbes zyklisches Kardinalquin ist ein zyklisches Quin mit zwei zueinander senkrechten Zuständen.

Regeln

Sie können entscheiden, welche Drehung Sie im oder gegen den Uhrzeigersinn ausführen möchten.

Nach dem Drehen sollten alle Lücken im Code durch Leerzeichen ersetzt werden, um die Positionierung beizubehalten.

Ihr Programm muss der Community-Definition eines Quines entsprechen .

Dies ist so dass das kürzeste Programm in jeder Sprache gewinnt. Ihr erstes Programm wird für Ihre Byteanzahl verwendet.

Standardlücken sind verboten.

Beispiele

Wenn Ihr Programm ist:

$_='print';eval

Dann muss die nächste Iteration entweder:

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

oder

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

welches das ursprüngliche Programm ausgeben muss:

$_='print';eval

Wenn Ihr Programm ist:

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

Dann muss die nächste Iteration entweder:

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

oder:

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

welches das ursprüngliche Programm ausgeben muss:

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



1
@dylnan Nein, der andere bittet nicht um ein gemeinsames Quine.
Martin Ender

1
Nachdem ich die Antworten bis jetzt gesehen habe, denke ich, dass die eigentliche Herausforderung der Gegenuhrzeigersinn oder ein Quine mit mehr als einer Zeile ist (so dass sich die Drehung von der Transposition oder dem einfachen Einfügen von Zeilenumbrüchen unterscheidet).
Weijun Zhou

1
Möglicherweise möchten Sie, dass die beiden Programme unterschiedlich sind. Ansonsten wären Quines, die zufällig rotationssymmetrisch sind, gültige Antworten.
Martin Ender

Antworten:


14

CJam , 19 17 15 Bytes

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

Probieren Sie es online! Probieren Sie die Rotation.

Erläuterung

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

Im gedrehten Code gibt es überall Zeilenvorschübe:

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

Wie Lynn bei Doms früherer Quine-Challenge bemerkte, bildet das Einfügen von Zeilenvorschüben immer noch eine gültige Quine, da die Zeilenvorschübe im Block ohnehin wörtlich beibehalten werden und es auch Zeilenvorschübe in der "_~"Zeichenfolge gibt, damit diese beiden Zeichen am Ende auf ihren Zeilenvorschüben erscheinen eigene Linie. Also {s"_~"+...}_~(mit Zeilenvorschub) ist immer noch ein gültiges Quine-Framework (obwohl es einen zusätzlichen Zeilenvorschub am Ende des Strings geben wird). N*Jetzt werden noch mehr Zeilenvorschübe in diese Zeichenfolge eingefügt, aber das ist uns eigentlich egal: weil jetzt""- dieser String einen Zeilenvorschub enthält, werden alle Zeilenvorschübe aus der Programmdarstellung entfernt. Also haben wir wieder die horizontale Form des Codes und machen die Drehung rückgängig.




Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.