Schreiben Sie Code, der als Cat-Programm fungiert. Das heißt, eine Zeichenfolge eingeben und so ausgeben, wie sie ist. Die normale Umkehrung Ihres Codes muss jedoch die normale Umkehrung der Eingabezeichenfolge ausgeben. Und die visuelle Umkehrung Ihres Codes muss die visuelle Umkehrung der Eingabezeichenfolge ausgeben.
Die normale Umkehrung ist die umgekehrte Zeichenfolge einer Zeichenfolge. Die visuelle Umkehrung ist die normale Umkehrung, wobei die Zeichen jeweils ()[]{}<>
durch ersetzt werden )(][}{><
.
Sie können jede Codepage verwenden, die die Zeichen enthält ()[]{}<>
und vor dieser Herausforderung veröffentlicht wurde, um Zeichen zu definieren. Sie müssen für Ihren gesamten Code dieselbe Codepage verwenden. Ihr ursprünglicher Code muss in dieser Codepage gültig sein, und wenn Sie einen Ihrer umgekehrten Codes darauf anwenden, sollte sich dies ergeben.
Dies ist Code-Golf , der kürzeste Code in Bytes gewinnt.
Beispiel
Für die Zeichenfolge AB(XY)
sind die normalen und visuellen Umkehrungen )YX(BA
und (YX)BA
.
Wenn Ihr Code (in einer hypothetischen Sprache) ist AB(XY)
, dann sollte der Code )YX(BA
und (YX)BA
die normalen und visuellen Umkehrungen der Eingabezeichenfolge ausgeben. Und AB(XY)
sollte als Katzenprogramm wirken.
quelle
Antworten:
05AB1E , 16 Bytes
Nutzt die Tatsache, dass 05AB1E eine Konstante hat,
"()<>[]{}"
die für die visuelle Umkehrung vordefiniert ist und diese nicht beeinflusst.Code:
Erläuterung:
Probieren Sie es online!
Rückgängig gemacht:
Erläuterung:
Probieren Sie es online!
Optisch umgekehrt:
Erläuterung:
Probieren Sie es online!
Verwendet CP-1252- Codierung.
quelle
CJam, 21 Bytes
Teste es hier.
Normale Umkehrung:
Teste es hier.
Visuelle Umkehrung:
Teste es hier.
Erläuterung
Zunächst der normale Code:
Dies ist einfach:
q
Liest alle Eingaben,e#
kommentiert den Rest des Programms aus und die Eingabe wird implizit am Ende gedruckt.Nun die normale Umkehrung:
Und schließlich die visuelle Umkehrung:
quelle
Haskell, 124 Bytes
Nach vorne:
Normaler Rückwärtsgang:
Visuelle Umkehrung:
Jede Version definiert eine Funktion,
f
die einen String annimmt und zurückgibt. Im Vorwärtsmodusf
ist die Identitätsfunktionid
, der Rest des Codes ist ein Kommentar. Im normalen Rückwärtsmodus die Wache1<2
inf
heißtTrue
, soreverse
angewandt wird. Im visuellen Rückwärtsmodus<
wird auf umgeschaltet>
und die Wache istFalse
. Der zweite Wächter ist genau umgekehrt undTrue
im visuellen Modus, also wird zusätzlichq
angewendet, was "() <> {} []" schaltet.Außerdem
<
und>
in den Wachen verwendet mein Code keine der Klammern, so dass sie nicht durcheinander gebracht werden können.quelle
Bash + gängige Linux-Dienstprogramme, 51
Normale Umkehrung:
Visuelle Umkehrung:
Der Haupttrick dabei ist, dass die Zeichenfolge
()[]{}<>
als 691E97CA5D607DB5 (Basis 15) codiert ist. Der resultierendedc
Befehl liefert nach beiden Arten der Umkehrung dasselbe Ergebnis. Das'()[]{}<>'
Zeichenfolgenliteral ist jedoch vom Umkehrtyp abhängig.tac
wird benötigt, um die Reihenfolge der Eingabezeilen umzukehren, undrev
wird benötigt, um die Zeichen jeder Zeile umzukehren. Jede ASCII-Eingabe sollte akzeptabel sein.quelle
MATL,
26242216 BytesNach vorne
Probieren Sie es online!
Erläuterung:
Normale Umkehrung:
Probieren Sie es online!
Erläuterung:
Visuelle Umkehrung:
Probieren Sie es online!
Erläuterung:
quelle
()[]{}<>
durch ersetzt werden)(][}{><
.GolfScript,
3228 BytesProbieren Sie es online!
Normale Umkehrung:
Probieren Sie es online!
Visuelle Umkehrung:
Probieren Sie es online!
Die Tatsache, dass ein Unmatched
}
das Programm in GolfScript beendet, machte dies ziemlich einfach. Allerdings bin ich mir ziemlich sicher, dass mein Code zum Vertauschen der Klammern noch nicht optimal ist.quelle
Python 2.7, 208 Bytes
Nach vorne
Normale Umkehrung
https://eval.in/574639
Visuelle Umkehrung
https://eval.in/574638
Alle Richtungen von stdin bis EOF gelesen.
Hier gibt es nichts besonders Schlaues. Nachgestellte Kommentare, um nur den Vorwärts- und den Rückwärtscode auszuführen, dann eine
exec
Anweisung in einem try-Block, um Syntaxfehler für die beiden verschiedenen Umkehrungen abzufangen.quelle