บางครั้งเมื่อฉันวาดรูปฉันวาดรูปสี่เหลี่ยมผืนผ้าเริ่มต้นด้วยเส้นทแยงมุมจากมุมใดมุมหนึ่งและจากนั้นก็แค่ลากเส้นเป็นเส้นโดย "สะท้อน" เมื่อใดก็ตามที่ฉันตีด้านข้างของรูปสี่เหลี่ยมผืนผ้า ฉันทำสิ่งนี้ต่อไปจนกว่าฉันจะตีอีกมุมหนึ่งของสี่เหลี่ยม (และหวังว่าอัตราส่วนของสี่เหลี่ยมมุมฉากของฉันจะไม่ลงตัวเลย) มันเหมือนกับการติดตามเส้นทางของแสงเลเซอร์ที่ส่องเข้าไปในกล่อง คุณต้องสร้างผลงานชิ้นนั้นด้วยศิลปะ ASCII
เป็นตัวอย่างให้พิจารณากล่องความกว้างและความสูง5
3
เราจะเริ่มที่มุมซ้ายบนเสมอ #
เครื่องหมายเขตแดนของกล่อง โปรดทราบว่าความกว้างและความสูงอ้างถึงมิติด้านใน
####### ####### ####### ####### ####### ####### #######
#\ # #\ # #\ \# #\ /\# #\ /\# #\/ /\# #\/\/\#
# \ # # \ /# # \ /# # \/ /# # \/ /# #/\/ /# #/\/\/#
# \ # # \/ # # \/ # # /\/ # #\/\/ # #\/\/ # #\/\/\#
####### ####### ####### ####### ####### ####### #######
ความท้าทาย
เนื่องจากความกว้างและความสูงของกล่อง (บวก) คุณควรสร้างผลลัพธ์สุดท้ายของการติดตามเลเซอร์ คุณสามารถเขียนโปรแกรมหรือฟังก์ชั่น, รับอินพุตผ่าน STDIN (หรือทางเลือกที่ใกล้เคียงที่สุด), อาร์กิวเมนต์บรรทัดคำสั่ง, ฟังก์ชั่นอาร์กิวเมนต์และส่งออกผลลัพธ์ผ่าน STDOUT (หรือทางเลือกที่ใกล้เคียงที่สุด) หรือผ่านฟังก์ชั่น
คุณสามารถใช้รูปแบบรายการสตริงหรือตัวเลขที่สะดวกสำหรับการป้อนข้อมูล ผลลัพธ์จะต้องเป็นสตริงเดี่ยว (เว้นแต่คุณจะพิมพ์ลงใน STDOUT ซึ่งแน่นอนว่าคุณจะค่อยๆ) ซึ่งหมายความว่าคุณสามารถรับความสูงก่อนและความกว้างที่สอง - เพียงระบุรูปแบบการป้อนข้อมูลที่แน่นอนในคำตอบของคุณ
จะต้องไม่มีช่องว่างนำหน้าหรือต่อท้ายบนบรรทัดใด ๆ ของเอาต์พุต คุณสามารถเลือกที่จะออกบรรทัดใหม่ต่อท้ายบรรทัดเดียว
คุณต้องใช้พื้นที่/
, \
และ#
และทำซ้ำกรณีทดสอบตรงตามที่แสดง
กรณีทดสอบ
2 2
####
#\ #
# \#
####
3 2
#####
#\/\#
#/\/#
#####
6 3
########
#\ /#
# \ / #
# \/ #
########
7 1
#########
#\/\/\/\#
#########
1 3
###
#\#
#/#
#\#
###
7 5
#########
#\/\/\/\#
#/\/\/\/#
#\/\/\/\#
#/\/\/\/#
#\/\/\/\#
#########
22 6
########################
#\ /\ /\ /\ /\ /\ #
# \/ \/ \/ \/ \/ \#
# /\ /\ /\ /\ /\ /#
#/ \/ \/ \/ \/ \/ #
#\ /\ /\ /\ /\ /\ #
# \/ \/ \/ \/ \/ \#
########################
X
จำเป็นสำหรับการข้าม อาจจะคราวหน้า. ;)