最近大雪が降りましたが、私道は雪が吹く必要があります。除雪機がすでに吹雪しているエリアを越えた場合、そのエリアには雪が吹き付けられ、再び吹く必要があります。そしてもちろん、除雪機は私道の真ん中で始めることはできません、それはそれが保管されている私のガレージから始める必要があります。
より正式には:
プログラムは、標準形式の入力を、次のような文字列または多次元配列として受け取ります。
XXXXOOOOXXXX
X X
X X
XXXXXXXXXXXX
X吹雪不可Oエリア、除雪機設置可能エリア、空スペースは雪のあるエリア 必要に応じて、異なる値を選択できます。
プログラムは次のようなものを出力する必要があります。
XXXX*%OOXXXX
Xv<<<^<<<<<X
X>>>>>>>>>^X
XXXXXXXXXXXX
除雪機はから始まり*ます。は*常に最も近い非ガレージスペースを指します。<、>、v、および^すべての次の方向がどこにあるのポインタを表します。彼らはどこに行くべきか除雪機を指しています。ポインターがをポイントする%と、送風機がガレージに再到着し、私道全体がきれいになります。
除雪機は私道全体を越えなければなりません。除雪機の経路が重なることはありません。不可能な入力を与えてはなりません。
必要以上に長く外に出たくなく、タイピングに多くの時間を費やす必要がないため、プログラムはできるだけ短くする必要があります。最短のコードが勝ちます!
テストケース:
これらのテストケースには、複数の正解がある場合があります。各テストケースの下に可能な解決策を示しました。
テストケース1:例で示したもの。
テストケース2:
XOOOOOX
X X
X X
X XXXXXXXX
X X
X X
XXXXXXXXXXXXXX
X*OOO%X
Xv>>>^X
Xv^<<<X
Xv>>>^XXXXXXXX
Xv^<<<<<<<<<<X
X>>>>>>>>>>>^X
XXXXXXXXXXXXXX
テストケース3:
XOOOOX
X X
X X
X XXX
X X
X X
XXXXXX
XOO%*X
X>>^vX
X^v<<X
X^vXXX
X^>>vX
X^<<<X
XXXXXX
テストケース4:
XXXXXXXXXXXXX
O X
O X X
O X X
O X
XXXXXXXXXXXXX
XXXXXXXXXXXXX
*>>>>>>>>>>vX
Ov<v<Xv<<<<<X
Ov^v^X>>>>>vX
%<^<^<<<<<<<X
XXXXXXXXXXXXX
Oのが常に直線であると仮定できますか?2)Osは常に配列の端にありますか?3)先行スペースがないこと?4)末尾にスペースがないこと(つまり、テストケース2では、一部の行が他の行よりも短い)?