迷路にハマった!

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

棒倒し法で絵を描く方法の続き

少し前の記事で、棒倒し法で絵が出る迷路が描けるか試してみた。

 

棒倒し法で絵が書けるか試してみた

 

上の記事で試した時は、成功したものの、例外が発生する可能性があると記した。

 

でも、よく考えてみると、例外が、簡単に発生する。

 

それは、棒倒し法の仕組みに大きく関係している。

 

f:id:sasatarokun:20141104093002p:plain

 

棒倒し法というのは上の図のように、まず、グリッドをつくって、1マスごとに棒に見立てた壁を決定する(四角い柱状の棒を上から眺めているような感じ)。その後、一番上の段の棒を上下左右のどこかに倒す。その際、倒した場所を壁にする。

 

2段目以降は、下左右のどこかに柱を倒す。

 

なお、倒した柱が重なってはない。(たとえば、柱を右に倒した場合、その右隣の柱は、左に倒すことができない。)

 

これを繰り返すと、迷路が完成する。

 

2段目以降は、下と左と右の3方向のどれかに柱を倒さなければならない。

 

だが、絵が出る迷路を作成する際に、正解の経路に下図のような袋小路があると、右にも左にも下にも倒すすことができない。つまり、棒倒し法ができなくなってしまう。

 

f:id:sasatarokun:20141104093712p:plain

 

棒を倒さないマスがあったからといって、必ずしも、迷路が成立しないわけではない。

 

たとえば、下図のように、問題の棒のマスと外周の壁が結びついている場合は、絵が出る迷路は成立する。

f:id:sasatarokun:20141104093858p:plain

この記事で書いた例だけならば、大した問題でもなさそうだが、まだまだ、例外は沢山発生しそうなので、絵が出る迷路を棒倒し法で作るのは非効率と言えそうだ。