Einführung
Schreiben Sie ein vollständiges Programm, das einen rechteckigen Block mit ASCII-Zeichen um 90 Grad im Uhrzeigersinn dreht. Wenn das Programm selbst um 90 Grad im Uhrzeigersinn gedreht wird, wird ein Block mit ASCII-Zeichen um 90 Grad gegen den Uhrzeigersinn gedreht.
Regeln
- Sie verwenden häufig keine integrierten Funktionen, mit denen Sie Matrizen drehen oder transponieren können. Beispielsweise sind in MATLAB / Octave
rot90
und dem Transponierungsoperator'
nicht zulässig. - Sie müssen ein vollständiges Programm schreiben, das STDIN und STDOUT oder das nächste Äquivalent verwendet.
- Ihr Programm muss rechteckig sein und davon ausgehen, dass die Eingabe ebenfalls rechteckig ist.
- Die Eingabe und Ausgabe sind durch Zeilenumbrüche getrennte Zeichenfolgen und enthalten keine nachgestellten Zeilenumbrüche.
Wenn Ihr Programm mit dem Quellcode als Eingabe ausgeführt wird, muss es sich um 90 Grad im Uhrzeigersinn drehen. Die Ausgabe muss ein zweites Programm in derselben Sprache sein, das seine Eingabe um 90 Grad gegen den Uhrzeigersinn dreht. Wenn das gedrehte Programm seinen Quellcode als Eingabe erhält, sollte er den Quellcode des ursprünglichen Programms ausgeben.
Hinweis: Beide Programme müssen für jede Eingabe funktionieren , nicht nur für ihren eigenen Quellcode. Daher ist ein aus einem Zeichen bestehender Quine nicht zulässig.
Beispiel
Angenommen, das Folgende ist ein gültiges Programm, das seine Eingabe in einer hypothetischen Sprache um 90 Grad dreht.
^f a2% 3
lk (^_^&
v
D8 $4 /
Wenn es mit sich selbst als Eingabe ausgeführt wird, gibt es ein anderes gültiges Programm aus, das seine Eingabe gegen den Uhrzeigersinn dreht:
D l^
8 kf
$ (a
4 ^2
_%
^
/v&3
Dieses zweite Programm gibt, wenn es sich selbst als Eingabe gegeben wird, das ursprüngliche Programm aus. Beachten Sie, dass die leere Zeile vier Leerzeichen enthalten sollte und in der vorletzten Zeile ein Leerzeichen nachgestellt ist, das beim Abzeichnen nicht gerendert werden kann. Zu klären:
$ examplelang program < program > rotProg
$ examplelang rotProg < rotProg > program1
$ diff -s program program1
Files program and program1 are identical
Kürzeste Sendung gewinnt. Standardlücken sind verboten.
:.+
über mehrere Zeilen aufgeteilt werden?