Из всех символов ASCII легко сказать, что некоторые из них образуют группы, которые являются вращениями одного и того же основного символа. Например, V > ^ <
. Это дает возможность создавать искусство ASCII, которое можно поворачивать на кратные 90 градусов и при этом оставаться искусством ASCII.
Соревнование
Ваша цель - сыграть в гольф программу, которая принимает искусство ASCII и количество градусов, чтобы повернуть его из STDIN, и распечатать повернутое искусство ASCII в STDOUT.
В первой строке ввода ваша программа получит число N. Это число представляет ширину и высоту рисунка ASCII.
Затем вы получите еще N строк ровно по N символов в каждой (новая строка не учитывается в этом числе). Размер искусства всегда будет квадратным, хотя он может иметь отступы в форме пробелов, чтобы сделать его квадратным.
Затем в последней строке вы получите еще одно число: 90, 180 или 270. Это показывает, на сколько градусов по часовой стрелке должно быть повернуто изображение.
Примечание. Введенное изображение будет содержать только символы, которые можно повернуть на правильную величину. Если входные данные не соответствуют этим требованиям точно, никакого конкретного поведения не требуется.
В качестве вывода ваша программа должна напечатать ровно N строк по N символов, с символами новой строки после каждой строки. Изображение должно быть повернуто так, чтобы каждый символ в оригинале был заменен повернутой версией и был перемещен в правильное место на изображении.
Примеры (не очень красивый ASCII art)
вход
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 символов.