在所有ASCII字符中,很容易看出其中某些字符是同一基本字符旋转的组。例如,V > ^ <
。这样就可以构造ASCII艺术作品,该艺术作品可以旋转90度的倍数,并且仍然保留ASCII艺术作品。
挑战
您的目标是制作一个程序,该程序接受ASCII艺术作品和度数以将其从STDIN旋转,然后将旋转的ASCII艺术作品打印到STDOUT。
在输入的第一行上,您的程序将收到一个数字N。该数字表示ASCII图的宽度和高度。
然后,您将再收到N行,每行分别正好包含N个字符(此行不计入换行符)。艺术作品的尺寸将始终为正方形,尽管它可能具有空格形式的填充物以使其成为正方形。
然后,您将在最后一行收到另一个数字:90、180或270。这表示应按顺时针方向旋转图片多少度。
注意:输入的图像将仅包含可以旋转正确量的字符。如果输入与这些要求不完全匹配,则不需要特定的行为。
作为输出,您的程序应精确打印N行,每行N个字符,并在每行之后添加换行符。应当旋转图像,以使原稿中的每个字符都被旋转后的版本替换,并已移至图像中的正确位置。
示例(不是很漂亮的ASCII艺术)
输入值
5
<- ||
| |V
+->+
|O
<--+
90
输出量
^ +-^
| | |
| V
+-+--
O <-
(因为字符不是正方形,所以旋转90和270看起来效果不佳)
输入值
6
+ /\ +
| \ \|
( \/|
\ )
I \ /
:) V $
180
输出量
$ ^ (:
/ \ I
( \
|/\ )
|\ \ |
+ \/ +
必需的支持字符
对于所有旋转(90、180和270),程序都应该能够旋转:
- 空间,
+
,@
,X
以及O
从未改变 V
>
<
^
|
-
和\
/
(旋转180,它们保持不变)
对于180度旋转,必须支持这些其他字符
I
N
Z
%
:
0
=
S
~
$
#
保持不变P
d
,(
)
,[
]
,{
}
,M
W
,和9
6
P d, ( ), [ ], { }, M W, and 9 6
可以旋转90º或270º吗?
v
,这是不受支持的字符。我认为这本来是大写的V
。另外,其中的最后一行不会填充为5个字符长。