時々、だらだらしているときは、長方形を描き、角の1つから対角線で始め、長方形の辺に当たるたびにそれを「反映」することで線をトレースします。長方形の別の角に当たるまでこれを続けます(そして、長方形のアスペクト比が無理ではないことを願っています;))。これは、箱に照らされたレーザーの経路を追跡するようなものです。その結果をASCIIアートで作成することになります。
例として、幅5
と高さのボックスを考えます3
。常に左上隅から開始します。#
マークボックスの境界。幅と高さは内側の寸法を参照していることに注意してください。
####### ####### ####### ####### ####### ####### #######
#\ # #\ # #\ \# #\ /\# #\ /\# #\/ /\# #\/\/\#
# \ # # \ /# # \ /# # \/ /# # \/ /# #/\/ /# #/\/\/#
# \ # # \/ # # \/ # # /\/ # #\/\/ # #\/\/ # #\/\/\#
####### ####### ####### ####### ####### ####### #######
チャレンジ
ボックスの(正の)幅と高さを考えると、レーザーをトレースする最終結果を生成する必要があります。プログラムまたは関数を作成し、STDIN(または最も近い代替)、コマンドライン引数、関数引数を介して入力を取得し、STDOUT(または最も近い代替)、または関数の戻り値または引数を介して結果を出力できます。
入力には、便利なリスト、文字列、または数値形式を使用できます。出力は単一の文字列である必要があります(STDOUTに出力する場合を除き、もちろん徐々に出力してください)。これはまた、最初に高さを、次に幅をとることができることを意味します-答えに正確な入力形式を指定するだけです。
出力のどの行にも先頭または末尾の空白があってはなりません。オプションで、単一の末尾の改行を出力できます。
あなたは、スペースを使用しなければならない/
、\
と#
しているとおりにテストケースを再現します。
テストケース
2 2
####
#\ #
# \#
####
3 2
#####
#\/\#
#/\/#
#####
6 3
########
#\ /#
# \ / #
# \/ #
########
7 1
#########
#\/\/\/\#
#########
1 3
###
#\#
#/#
#\#
###
7 5
#########
#\/\/\/\#
#/\/\/\/#
#\/\/\/\#
#/\/\/\/#
#\/\/\/\#
#########
22 6
########################
#\ /\ /\ /\ /\ /\ #
# \/ \/ \/ \/ \/ \#
# /\ /\ /\ /\ /\ /#
#/ \/ \/ \/ \/ \/ #
#\ /\ /\ /\ /\ /\ #
# \/ \/ \/ \/ \/ \#
########################
X
、横断に必要な複数の出発点を検討していました。また今度。;)