squld #5275(2008/01/12 07:53 GMT) Rating9/11=0.82
以下のルールを満たすn×mの迷路を出力するプログラムを作ってください。 1. 格子状の迷路であること。 2. 経路の幅は均等であること。 3. 迷路のある地点からの全ての地点に到達する経路が1つだけ存在すること。 ループも認めません。 4. 出力の度にランダムな迷路であること。 ランダムシードが同じ時に同じ迷路になってしまうのはよいです。 たとえば、n=4, m=5の迷路の出力は以下のようになります。 |1|2|3|4| ―■■■■■■■■■ 1■ ■ ■ ―■■■ ■■■ ■ 2■ ■ ■ ―■ ■■■ ■ ■ 3■ ■ ■ ―■ ■■■ ■ ■ 4■ ■ ■ ■ ―■ ■ ■■■ ■ 5■ ■ ■ ■ ―■■■■■■■■■ こう言うのは、×の部分が3のルールに違反するのでダメです。 |1|2|3|4| ―■■■■■■■■■ 1■ ■×■ ■ ―■■■ ■■■ ■ 2■ ■ ■ ―■ ■■■ ■ ■ 3■ ■ ■ ―■ ■■■■■ ■ 4■ ■×××■ ■ ―■ ■×■■■ ■ 5■ ■×××■ ■ ―■■■■■■■■■ このようなループも2のルールに違反するのでダメです。 |1|2|3|4| ―■■■■■■■■■ 1■ ■ ■ ―■■■ ■ ■ ■ 2■ ■ ■ ―■ ■■■ ■ ■ 3■ ■ ■ ―■ ■■■ ■ ■ 4■ ■ ■ ■ ―■ ■ ■■■ ■ 5■ ■ ■ ―■■■■■■■■■ できたプログラムを使って n=1024, m=1024 の迷路を作るのにかかった時間を教えてください。 難易度高めです。限られたメモリを使って縦方向に無限に広い迷路を どうやって作るのかを考えると答えが見えてくると思います。 ソースコードはJavaで150行程度になりました。
[ reply ]
squld
#5275()
Rating9/11=0.82
[ reply ]