Aceto , 49 Bytes
&M"pp"
L!)(de
&c;`Che"
`!d!sick
!',@p"!'
'N'U`!Lu
yadda yadda Hilbert Kurve.
Zunächst verschieben wir die drei wichtigen Zeichen auf den Stapel:
!'
'N'U
Dann setzen wir eine Fangmarke und beginnen mit dem Lesen eines einzelnen Zeichens. Wir d
duplizieren es und negieren es, und wenn das Ergebnis davon wahr ist (also wenn der String leer war; also die Eingabe endete), springen wir zum Ende:
;`
d!
,@
Mit der verbleibenden Kopie des Eingabezeichens prüfen wir, ob es im Rest des Stapels enthalten ist (dh ob es eines von!, N, U ist). Wenn nicht, werfen wir einen Fehler aus und werfen uns zurück zu unserer Fangmarke, wo wir ein anderes Zeichen lesen:
&c
`!
Andernfalls laden wir das, was sich im Schnellspeicher befindet (im Wesentlichen ein Register, das anfangs eine leere Zeichenfolge ist; falsch), negieren es und senden es zurück in den Schnellspeicher.
&M
L!
Wenn die Eingabe gestoppt ist, werden wir zum Ende gesendet. Dort kehren wir die Richtung um, drücken ein Ausrufezeichen, laden die Schnellspeicherung und negieren sie. Wenn das wahr ist (dh wir hatten eine ungerade Anzahl von Negationssachen), drucken wir das Ausrufezeichen, das wir gedrückt haben:
p !'
`!Lu
Zum Schluss schieben wir die Zeichenkette in zwei Teile und drucken sie (aus Platzgründen):
"pp"
)(de
Che"
sick
"
Danach läuft das Programm immer noch zum ursprünglichen Anfang zurück, aber da keiner der Befehle irgendetwas ausgibt oder ein schleifenartiges Verhalten aufweist, spielt das keine Rolle. Tatsächlich löst der erste Non-Nopping-Befehl, den wir erreichen, eine Ausnahme aus, bei der ein Großteil des Codes übersprungen wird, weil wir zur Catch-Marke springen, was bedeutet, dass Aceto in diesem Teil nur Folgendes sieht:
&
!' @
'N'U
Da U
wird jetzt nicht von einem einzelnen Anführungszeichen vorangestellt und wird daher nicht als Zeichenliteral gesehen, wird es als Befehl interpretiert: U
umkehrt alle Elemente auf dem Stapel (jetzt ist es !
, N
, U
, von oben), und 'N
und '!
drücken mehr Zeichen, was bedeutet, dass wir mit dem Stapel enden [U, N, !, N, !]
.
Randnotiz: Dies ist das erste Aceto-Programm, das (teilweise) mit Hilfe von Acetos neuem Editor geschrieben wurde .
notunischecked
?