จากตัวละคร 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 ตัวอักษร