スライドパズルのソルバーを作ってみた。
久々にプログラム関係のエントリ。
Nintendo DSで、最近レイトン教授とかをやってたんですよ。
で、大体の謎はスラスラと、あるいはがんばれば解けたんですが、2作目の本編にある、「ゴミをゴミ箱の中に移す問題」だけがどうにも出来なくて。
箱入り娘みたいなスライドパズル(正式にはスライディングブロックパズル)なのですが、こればっかりは論理的なアプローチでは解けないですからねぇ。
で、まぁネットで検索してあげれば答えも見つかるんでしょうが、なんかそれもくやしいので、ならソルバーを自分で作って解いてやれ、とw
アルゴリズムは単純に幅優先探索をしていくというもので、あえて工夫を挙げるなら、状態を保存するのにハッシュマップを使ったくらい。
こういう列挙に関するアルゴリズムとかも研究されているはずなのですが、詳しく知らないので^^;
なんだかんだでプログラミングするのに1週間くらいかかって、ついこないだ出来上がったばかりなのですが、解けはするものの、やはりなかなか時間がかかりますねぇ。
もっといいアルゴリズムがあればいいんですけどねぇ。
ちなみに、一番最後の謎(「悪魔の箱」)も、同様のスライドパズルだったので、作ったプログラムがそのまま使えました。
これはよかったかなと^^
(ちなみに、ゴミ箱の問題を解くほうが悪魔の箱の問題を解くよりも時間かかっていると思います。悪魔の箱は3時間くらいで解けたので。)
※ソースコードは載せません。
全部載せると、1000行くらいになっちゃうので^^;
グラフィカルなインターフェースで作れれば公開も出来るんでしょうけど、技術が足りない。。。
久々にプログラム関係のエントリ。
Nintendo DSで、最近レイトン教授とかをやってたんですよ。
で、大体の謎はスラスラと、あるいはがんばれば解けたんですが、2作目の本編にある、「ゴミをゴミ箱の中に移す問題」だけがどうにも出来なくて。
箱入り娘みたいなスライドパズル(正式にはスライディングブロックパズル)なのですが、こればっかりは論理的なアプローチでは解けないですからねぇ。
で、まぁネットで検索してあげれば答えも見つかるんでしょうが、なんかそれもくやしいので、ならソルバーを自分で作って解いてやれ、とw
アルゴリズムは単純に幅優先探索をしていくというもので、あえて工夫を挙げるなら、状態を保存するのにハッシュマップを使ったくらい。
こういう列挙に関するアルゴリズムとかも研究されているはずなのですが、詳しく知らないので^^;
なんだかんだでプログラミングするのに1週間くらいかかって、ついこないだ出来上がったばかりなのですが、解けはするものの、やはりなかなか時間がかかりますねぇ。
もっといいアルゴリズムがあればいいんですけどねぇ。
ちなみに、一番最後の謎(「悪魔の箱」)も、同様のスライドパズルだったので、作ったプログラムがそのまま使えました。
これはよかったかなと^^
(ちなみに、ゴミ箱の問題を解くほうが悪魔の箱の問題を解くよりも時間かかっていると思います。悪魔の箱は3時間くらいで解けたので。)
※ソースコードは載せません。
全部載せると、1000行くらいになっちゃうので^^;
グラフィカルなインターフェースで作れれば公開も出来るんでしょうけど、技術が足りない。。。