迷路にハマった!

最近、迷路にハマっている。特に迷路のアルゴリズムが面白い。何か、アルゴリズムを活用できる分野があると思うのだが。。。

先っぽがくっついちゃだめ。そこに新たなルールを・・・

壁のばし法

正解の道が一つだけの迷路を作成するのに重要な事は、ループする道をつくらないこと。

 

これを壁に着目すると、「すべての壁がすべて外枠の壁に結びつく」と言いかえることができる。つまり、孤立した壁があると、その周りの道をぐるぐる回ることができるので、正解の道が2つ以上で来てしまうのだ。

 

そこで、考えられたのが壁のばし法。

 

外枠の壁から、壁を伸ばしていく。壁を分岐させてもいい。

 

ただし、先端が他の壁にぶつかってはいけない。

 

このルールに従って、壁を伸ばすと迷路が完成する。

 

いい忘れたが、最初に、後で掲載する図のように、等間隔に壁のセルを決定しておいて、すべてのセルにを外枠から延ばしたラインが到達するようにする。

 

横長の線を多くしようと考えた

普通に壁のばし法を実行しても面白く無い。今回は、ヨコ方向の移動が多い迷路をつくろうと考えた。

 

そこで、横に壁をのばすときは3つのセルをうめつくすというルールを付け加えた。ただし、例外として、3つ進むと、他の壁に当たる場合、進むセル数を短縮できる。

 

以下が実行した結果。

 

f:id:sasatarokun:20141031150937p:plain

 

f:id:sasatarokun:20141031150944p:plain

 

満足できない結果・・・

 

一応、横への移動が多い迷路になった。でも、自分で作成して思ったのは、「3」とうい数を設定したせいで、この数字にかなり影響を受けた壁になってしまうこと。

 

うまく言葉に出来ないのだが、とにかく、迷路作成の自由度がかなり落ちてしまった感じがした。

 

プログラミングであれば、ランダムに壁の移動方向を決める際に、ヨコ方向に移動する確率を少し上げればいいので、今回の実験のように3という数字にこだわらない、迷路が作れるだろう。

 

だが、プログラミングではなく、人の脳で横長の迷路を作る他の方法を考えたいので、また次回、挑戦しようと思う。