모든 ASCII 문자 중 일부는 동일한 기본 문자의 회전 인 그룹을 형성한다는 것을 쉽게 알 수 있습니다. 예를 들면 다음과 같습니다 V > ^ <
. 이를 통해 90 도의 배수로 회전 할 수 있고 여전히 ASCII 아트로 유지 될 수있는 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 자 길이로 채워지지 않습니다.