21
わんくま同盟 東京勉強会 #38 パズルをコンピュータに 解かせる 猪股健太郎

パズルをコンピュータに解かせる

Embed Size (px)

DESCRIPTION

わんくま同盟東京勉強会#38 Lightning Talk2009/10/17

Citation preview

Page 1: パズルをコンピュータに解かせる

わんくま同盟東京勉強会 #38

パズルをコンピュータに解かせる

猪股健太郎

Page 2: パズルをコンピュータに解かせる

わんくま同盟東京勉強会 #38

パズルの元ねた

•「レイトン教授と最後の時間旅行」

–Nintendo DS用のゲーム

–開発・制作・販売 レベルフゔイブ– http://www.amazon.co.jp/dp/B001LNNNK4

Page 3: パズルをコンピュータに解かせる

わんくま同盟東京勉強会 #38

ナゾ035 回線混乱のナゾ

•ゕリの巣みたいにトンネルを掘っていたら、図のようにこんがらがってしまった。

Page 4: パズルをコンピュータに解かせる

わんくま同盟東京勉強会 #38

Page 5: パズルをコンピュータに解かせる

わんくま同盟東京勉強会 #38

ナゾ035 回線混乱のナゾ

•AとA’、BとB’、CとC’の間に専用回線を引くことになっているが、同じ道に回線を2回通してはいけないという。

Page 6: パズルをコンピュータに解かせる

わんくま同盟東京勉強会 #38

ナゾ035 回線混乱のナゾ

•さて、1本だけ地上を通さないとつながらない線があるのだが、それはA、B、Cのどれだろう?

Page 7: パズルをコンピュータに解かせる

わんくま同盟東京勉強会 #38

Page 8: パズルをコンピュータに解かせる

わんくま同盟東京勉強会 #38

というわけで

•自力で解くのはあきらめて、コンピュータにやらせる

Page 9: パズルをコンピュータに解かせる

わんくま同盟東京勉強会 #38

#1もつれた道をほぐす

Page 10: パズルをコンピュータに解かせる

わんくま同盟東京勉強会 #38

Page 11: パズルをコンピュータに解かせる

わんくま同盟東京勉強会 #38

#1の方針

•交差点と交差点の接続関係をキープしたまま、配置を変えてみる

Page 12: パズルをコンピュータに解かせる

わんくま同盟東京勉強会 #38

#1をコンピュータにやらせる

•ばねモデル

•道がバネでできてる

•交差点同士は反発しあう

Page 13: パズルをコンピュータに解かせる

わんくま同盟東京勉強会 #38

やってみよう

•demo

Page 14: パズルをコンピュータに解かせる

わんくま同盟東京勉強会 #38

やってみた

•失敗

•ゕルゴリズムが悪いっぽい

•もういいよ、手でやるから

Page 15: パズルをコンピュータに解かせる

わんくま同盟東京勉強会 #38

Page 16: パズルをコンピュータに解かせる

わんくま同盟東京勉強会 #38

#23つの道を交わらないように結ぶ

Page 17: パズルをコンピュータに解かせる

わんくま同盟東京勉強会 #38

#2の方針

•a、b、cを基点とする3つのルートを色分けしながら、交差点を塗っていく

•途中でルートが途絶えてしまったら、別のパターンで再チャレンジ

•すべてのパターンを網羅する

Page 18: パズルをコンピュータに解かせる

わんくま同盟東京勉強会 #38

#2をコンピュータにやらせる

•グラフ探索

–深さ優先探索

–幅優先探索

•両方とも実装する

Page 19: パズルをコンピュータに解かせる

わんくま同盟東京勉強会 #38

やってみよう

•demo

Page 20: パズルをコンピュータに解かせる

わんくま同盟東京勉強会 #38

やってみた

•成功

•解けた!

Page 21: パズルをコンピュータに解かせる

わんくま同盟東京勉強会 #38

アニメーションの注意点

•UIスレッドで重い処理をしない

•重い処理はバックグラウンドスレッドで

•UIスレッドに対し、定期的にリフレッシュ指示を出す