読者です 読者をやめる 読者になる 読者になる

棒倒し法で迷路作成

ocaml

ちょっと前のプロジェクトで、メンバー全員で設計をゴリゴリやっている時期があったのですが、一日30分位はコードを書かせたいと思い、どう書く?orgの課題をメンバーに解かせていたことがありました。

そのとき、どう書く?orgという課題があり、担当のメンバーは独自アルゴリズム(やや穴掘り法っぽい)で解いていたのですが、もっとスマートなやり方があるのでは?と気になっていました。

そして未だに、この課題が気になっていたのでチャレンジしてみました。ただし、迷路作成の定番アルゴリズムがどうしても知りたかったので、自力でアルゴリズムを考え出すのは省略しました。

調べてみたところ、棒倒し法、穴掘り法というのが定番アルゴリズムらしいです。穴掘り法は思いつきそうですが、棒倒し法のほうは思いつく自信はありません。ちょっと感動しました。

で、今回は、棒倒し法で挑戦しました ⇒ どう書く?org

あ〜〜 すっきりした。

mitsu@garlic$ ./maze.native 8 8
■■■■■■■■■■■■■■■■■
■ ■       ■     ■
■ ■ ■■■■■■■ ■ ■ ■
■           ■ ■ ■
■ ■■■■■■■■■■■■■ ■
■           ■   ■
■ ■ ■■■■■ ■ ■ ■■■
■ ■     ■ ■ ■   ■
■■■ ■ ■■■■■■■ ■ ■
■   ■     ■   ■ ■
■■■ ■■■■■ ■ ■■■■■
■     ■   ■     ■
■■■ ■ ■ ■■■■■ ■ ■
■   ■ ■     ■ ■ ■
■ ■■■ ■■■■■ ■■■■■
■   ■   ■       ■
■ ■■■■■■■■■ ■■■ ■
■         ■   ■ ■
■■■■■■■■■■■■■■■■■
mitsu@garlic$


追記:壁かどうかをヴァリアントにした版を再投稿しました。
どう書く?org


追記:id:osiireさんのアドバイスを皮切りに、色々気になったところが出てきたので、LL Golfの嵐の中を再再投稿…
どう書く?org