前書き
ASCII文字の長方形ブロックを時計回りに90度回転する完全なプログラムを作成します。プログラム自体が時計回りに90度回転すると、ASCII文字のブロックが反時計回りに90度回転します。
ルール
- 多くの場合、行列を回転または転置する組み込み関数を使用しません。たとえば、MATLAB / Octave
rot90
および転置演算子'
では許可されていません。 - STDINとSTDOUTまたはそれに最も近いものを使用する完全なプログラムを作成する必要があります。
- プログラムは長方形でなければならず、入力も長方形であると仮定する必要があります。
- 入力と出力は改行で区切られた文字列であり、末尾の改行はありません。
ソースコードを入力として実行する場合、プログラムは時計回りに90度回転する必要があります。出力は、入力を反時計回りに90度回転させる同じ言語の2番目のプログラムでなければなりません。回転したプログラムに入力としてソースコードが与えられると、元のプログラムのソースコードが出力されます。
注:両方のプログラムは、独自のソースコードだけでなく、あらゆる入力に対して機能する必要があるため、1文字のクインは許可されません。
例
次の例は、仮想言語ExampleLangで入力を90度回転させる有効なプログラムです。
^f a2% 3
lk (^_^&
v
D8 $4 /
自分自身を入力として実行すると、入力を反時計回りに回転させる別の有効なプログラムを出力します。
D l^
8 kf
$ (a
4 ^2
_%
^
/v&3
この2番目のプログラムは、入力として自分自身に与えられると、元のプログラムを出力します。空白行には4つのスペースが必要であり、2行目から最後の行にマークダウンでレンダリングできない後続スペースがあることに注意してください。明確にするために:
$ examplelang program < program > rotProg
$ examplelang rotProg < rotProg > program1
$ diff -s program program1
Files program and program1 are identical
最短のプログラムが勝ちます。標準的な抜け穴は禁止されています。
:.+
複数の行に分割できないのですか?