Thỉnh thoảng khi tôi vẽ nguệch ngoạc, tôi vẽ một hình chữ nhật, bắt đầu bằng một đường chéo từ một trong các góc, và sau đó chỉ cần vạch ra một đường bằng cách "phản chiếu" nó bất cứ khi nào tôi chạm vào một cạnh của hình chữ nhật. Tôi tiếp tục với điều này cho đến khi tôi chạm vào một góc khác của hình chữ nhật (và hy vọng rằng tỷ lệ khung hình của hình chữ nhật của tôi không hợp lý;)). Điều này giống như truy tìm đường đi của tia laser chiếu vào hộp. Bạn sẽ tạo ra kết quả của điều đó với nghệ thuật ASCII.
Ví dụ, hãy xem xét một hộp có chiều rộng 5
và chiều cao 3
. Chúng tôi sẽ luôn bắt đầu ở góc trên cùng bên trái. Các #
đánh dấu ranh giới của hộp. Lưu ý rằng chiều rộng và chiều cao đề cập đến kích thước bên trong.
####### ####### ####### ####### ####### ####### #######
#\ # #\ # #\ \# #\ /\# #\ /\# #\/ /\# #\/\/\#
# \ # # \ /# # \ /# # \/ /# # \/ /# #/\/ /# #/\/\/#
# \ # # \/ # # \/ # # /\/ # #\/\/ # #\/\/ # #\/\/\#
####### ####### ####### ####### ####### ####### #######
Các thách thức
Với chiều rộng và chiều cao (dương) của hộp, bạn sẽ tạo ra kết quả cuối cùng là tìm ra tia laser. Bạn có thể viết chương trình hoặc hàm, lấy đầu vào qua STDIN (hoặc thay thế gần nhất), đối số dòng lệnh, đối số hàm và xuất kết quả qua STDOUT (hoặc thay thế gần nhất) hoặc thông qua các giá trị hoặc đối số trả về hàm.
Bạn có thể sử dụng bất kỳ định dạng danh sách, chuỗi hoặc số thuận tiện cho đầu vào. Đầu ra phải là một chuỗi đơn (trừ khi bạn in nó thành STDOUT, tất nhiên bạn có thể làm dần dần). Điều này cũng có nghĩa là bạn có thể lấy chiều cao trước và chiều rộng thứ hai - chỉ cần xác định định dạng đầu vào chính xác trong câu trả lời của bạn.
Không được có khoảng trắng hàng đầu cũng như dấu vết trên bất kỳ dòng nào của đầu ra. Bạn có thể tùy ý xuất một dòng mới duy nhất.
Bạn phải sử dụng không gian, /
, \
và #
và tái tạo các trường hợp thử nghiệm chính xác như được hiển thị.
Các trường hợp thử nghiệm
2 2
####
#\ #
# \#
####
3 2
#####
#\/\#
#/\/#
#####
6 3
########
#\ /#
# \ / #
# \/ #
########
7 1
#########
#\/\/\/\#
#########
1 3
###
#\#
#/#
#\#
###
7 5
#########
#\/\/\/\#
#/\/\/\/#
#\/\/\/\#
#/\/\/\/#
#\/\/\/\#
#########
22 6
########################
#\ /\ /\ /\ /\ /\ #
# \/ \/ \/ \/ \/ \#
# /\ /\ /\ /\ /\ /#
#/ \/ \/ \/ \/ \/ #
#\ /\ /\ /\ /\ /\ #
# \/ \/ \/ \/ \/ \#
########################
X
sẽ cần thiết cho giao cắt. Có lẽ lần sau. ;)