SlideShare a Scribd company logo
1 of 21
Download to read offline
パズルをコンピュータに
   解かせる

  猪股健太郎


   わんくま同盟 東京勉強会 #38
パズルの元ねた
• 「レイトン教授と最後の時間旅行」
 –Nintendo DS用のゲーム
 –開発・制作・販売 レベルフゔイブ
 – http://www.amazon.co.jp/dp/B001LNNNK4




               わんくま同盟 東京勉強会 #38
ナゾ035 回線混乱のナゾ
•ゕリの巣みたいにトンネルを
 掘っていたら、図のようにこ
 んがらがってしまった。




      わんくま同盟 東京勉強会 #38
わんくま同盟 東京勉強会 #38
ナゾ035 回線混乱のナゾ
•AとA’、BとB’、CとC’の間
 に専用回線を引くことになっ
 ているが、同じ道に回線を2
 回通してはいけないという。




      わんくま同盟 東京勉強会 #38
ナゾ035 回線混乱のナゾ
•さて、1本だけ地上を通さな
 いとつながらない線があるの
 だが、それはA、B、Cのど
 れだろう?




      わんくま同盟 東京勉強会 #38
わんくま同盟 東京勉強会 #38
というわけで
•自力で解くのはあきらめて、
 コンピュータにやらせる




     わんくま同盟 東京勉強会 #38
#1
もつれた道をほぐす




  わんくま同盟 東京勉強会 #38
わんくま同盟 東京勉強会 #38
#1の方針
•交差点と交差点の接続関係を
 キープしたまま、配置を変え
 てみる




     わんくま同盟 東京勉強会 #38
#1をコンピュータにやらせる
•ばねモデル
•道がバネでできてる
•交差点同士は反発しあう




     わんくま同盟 東京勉強会 #38
やってみよう
•demo




        わんくま同盟 東京勉強会 #38
やってみた
•失敗
•ゕルゴリズムが悪いっぽい
•もういいよ、手でやるから




     わんくま同盟 東京勉強会 #38
わんくま同盟 東京勉強会 #38
#2
3つの道を交わらないように結ぶ




     わんくま同盟 東京勉強会 #38
#2の方針
• a、b、cを基点とする3つのルート
  を色分けしながら、交差点を塗っ
  ていく
• 途中でルートが途絶えてしまった
  ら、別のパターンで再チャレンジ
• すべてのパターンを網羅する


       わんくま同盟 東京勉強会 #38
#2をコンピュータにやらせる
•グラフ探索
–深さ優先探索
–幅優先探索
•両方とも実装する



     わんくま同盟 東京勉強会 #38
やってみよう
•demo




        わんくま同盟 東京勉強会 #38
やってみた
•成功
•解けた!




        わんくま同盟 東京勉強会 #38
アニメーションの注意点
• UIスレッドで重い処理をしない
• 重い処理はバックグラウンドス
  レッドで
• UIスレッドに対し、定期的にリフ
  レッシュ指示を出す



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

More Related Content

Viewers also liked

富山合同勉強会2015 ジェネリクス談義 C#編 補足
富山合同勉強会2015 ジェネリクス談義 C#編 補足富山合同勉強会2015 ジェネリクス談義 C#編 補足
富山合同勉強会2015 ジェネリクス談義 C#編 補足Kentaro Inomata
 
UIデザインパターンをSilverlightでやってみた part1
UIデザインパターンをSilverlightでやってみた part1UIデザインパターンをSilverlightでやってみた part1
UIデザインパターンをSilverlightでやってみた part1Kentaro Inomata
 
富山合同勉強会2015 ジェネリクス談義 C#編
富山合同勉強会2015 ジェネリクス談義 C#編富山合同勉強会2015 ジェネリクス談義 C#編
富山合同勉強会2015 ジェネリクス談義 C#編Kentaro Inomata
 
GUIのアーキテクチャ
GUIのアーキテクチャGUIのアーキテクチャ
GUIのアーキテクチャKentaro Inomata
 
業務システムを使いやすく! .NET Webアプリケーションの現在
業務システムを使いやすく!.NET Webアプリケーションの現在業務システムを使いやすく!.NET Webアプリケーションの現在
業務システムを使いやすく! .NET Webアプリケーションの現在Kentaro Inomata
 
言語設計者が意味論を書くときに考えていたこと
言語設計者が意味論を書くときに考えていたこと言語設計者が意味論を書くときに考えていたこと
言語設計者が意味論を書くときに考えていたことTaku Miyakawa
 
Windows Azure 上の WebLogic Server 12c から JPA を利用した O/R マッピング to SQL Database
Windows Azure 上の WebLogic Server 12c から JPA を利用した O/R マッピング to SQL DatabaseWindows Azure 上の WebLogic Server 12c から JPA を利用した O/R マッピング to SQL Database
Windows Azure 上の WebLogic Server 12c から JPA を利用した O/R マッピング to SQL Databasenormalian
 
もう一度Kotlinの話をしよう #ndsmeetup4
もう一度Kotlinの話をしよう #ndsmeetup4もう一度Kotlinの話をしよう #ndsmeetup4
もう一度Kotlinの話をしよう #ndsmeetup4Yukiya Nakagawa
 
勉強会資料:プログラムもアルゴリズム理解も不要な 機械学習テキストマイニング
勉強会資料:プログラムもアルゴリズム理解も不要な 機械学習テキストマイニング勉強会資料:プログラムもアルゴリズム理解も不要な 機械学習テキストマイニング
勉強会資料:プログラムもアルゴリズム理解も不要な 機械学習テキストマイニングMasahiro Yamaguchi
 
.NETの業務向けOSSフレームワーク鼎談
.NETの業務向けOSSフレームワーク鼎談.NETの業務向けOSSフレームワーク鼎談
.NETの業務向けOSSフレームワーク鼎談Kentaro Inomata
 
Server Side Kotlin
Server Side KotlinServer Side Kotlin
Server Side Kotlinyy yank
 
普段C#を使っている僕から見たKotlin
普段C#を使っている僕から見たKotlin普段C#を使っている僕から見たKotlin
普段C#を使っている僕から見たKotlinRyota Murohoshi
 
オープンソースコミュ俯瞰 18 nov2015
オープンソースコミュ俯瞰 18 nov2015オープンソースコミュ俯瞰 18 nov2015
オープンソースコミュ俯瞰 18 nov2015Yoshimitsu Homma
 
はじめてのAngular2
はじめてのAngular2はじめてのAngular2
はじめてのAngular2Kenichi Kanai
 
KotlinつかってQiitaクライアント作った時の話
KotlinつかってQiitaクライアント作った時の話KotlinつかってQiitaクライアント作った時の話
KotlinつかってQiitaクライアント作った時の話shinnosuke kugimiya
 
渋谷JVM#1 Immutable時代のプログラミング言語 Clojure
渋谷JVM#1 Immutable時代のプログラミング言語 Clojure渋谷JVM#1 Immutable時代のプログラミング言語 Clojure
渋谷JVM#1 Immutable時代のプログラミング言語 ClojureYoshitaka Kawashima
 
ビットコイン~原理からソースまで~
ビットコイン~原理からソースまで~ビットコイン~原理からソースまで~
ビットコイン~原理からソースまで~bitbank, Inc. Tokyo, Japan
 
わかってるフレームワーク Laravel
わかってるフレームワーク Laravelわかってるフレームワーク Laravel
わかってるフレームワーク LaravelMasashi Shinbara
 
DockerをRed Hatはどのように見ているのか
DockerをRed Hatはどのように見ているのかDockerをRed Hatはどのように見ているのか
DockerをRed Hatはどのように見ているのかEmma Haruka Iwao
 

Viewers also liked (20)

富山合同勉強会2015 ジェネリクス談義 C#編 補足
富山合同勉強会2015 ジェネリクス談義 C#編 補足富山合同勉強会2015 ジェネリクス談義 C#編 補足
富山合同勉強会2015 ジェネリクス談義 C#編 補足
 
UIデザインパターンをSilverlightでやってみた part1
UIデザインパターンをSilverlightでやってみた part1UIデザインパターンをSilverlightでやってみた part1
UIデザインパターンをSilverlightでやってみた part1
 
富山合同勉強会2015 ジェネリクス談義 C#編
富山合同勉強会2015 ジェネリクス談義 C#編富山合同勉強会2015 ジェネリクス談義 C#編
富山合同勉強会2015 ジェネリクス談義 C#編
 
GUIのアーキテクチャ
GUIのアーキテクチャGUIのアーキテクチャ
GUIのアーキテクチャ
 
業務システムを使いやすく! .NET Webアプリケーションの現在
業務システムを使いやすく!.NET Webアプリケーションの現在業務システムを使いやすく!.NET Webアプリケーションの現在
業務システムを使いやすく! .NET Webアプリケーションの現在
 
言語設計者が意味論を書くときに考えていたこと
言語設計者が意味論を書くときに考えていたこと言語設計者が意味論を書くときに考えていたこと
言語設計者が意味論を書くときに考えていたこと
 
Windows Azure 上の WebLogic Server 12c から JPA を利用した O/R マッピング to SQL Database
Windows Azure 上の WebLogic Server 12c から JPA を利用した O/R マッピング to SQL DatabaseWindows Azure 上の WebLogic Server 12c から JPA を利用した O/R マッピング to SQL Database
Windows Azure 上の WebLogic Server 12c から JPA を利用した O/R マッピング to SQL Database
 
もう一度Kotlinの話をしよう #ndsmeetup4
もう一度Kotlinの話をしよう #ndsmeetup4もう一度Kotlinの話をしよう #ndsmeetup4
もう一度Kotlinの話をしよう #ndsmeetup4
 
勉強会資料:プログラムもアルゴリズム理解も不要な 機械学習テキストマイニング
勉強会資料:プログラムもアルゴリズム理解も不要な 機械学習テキストマイニング勉強会資料:プログラムもアルゴリズム理解も不要な 機械学習テキストマイニング
勉強会資料:プログラムもアルゴリズム理解も不要な 機械学習テキストマイニング
 
.NETの業務向けOSSフレームワーク鼎談
.NETの業務向けOSSフレームワーク鼎談.NETの業務向けOSSフレームワーク鼎談
.NETの業務向けOSSフレームワーク鼎談
 
Server Side Kotlin
Server Side KotlinServer Side Kotlin
Server Side Kotlin
 
普段C#を使っている僕から見たKotlin
普段C#を使っている僕から見たKotlin普段C#を使っている僕から見たKotlin
普段C#を使っている僕から見たKotlin
 
Kotlin as an AltJS
Kotlin as an AltJSKotlin as an AltJS
Kotlin as an AltJS
 
オープンソースコミュ俯瞰 18 nov2015
オープンソースコミュ俯瞰 18 nov2015オープンソースコミュ俯瞰 18 nov2015
オープンソースコミュ俯瞰 18 nov2015
 
はじめてのAngular2
はじめてのAngular2はじめてのAngular2
はじめてのAngular2
 
KotlinつかってQiitaクライアント作った時の話
KotlinつかってQiitaクライアント作った時の話KotlinつかってQiitaクライアント作った時の話
KotlinつかってQiitaクライアント作った時の話
 
渋谷JVM#1 Immutable時代のプログラミング言語 Clojure
渋谷JVM#1 Immutable時代のプログラミング言語 Clojure渋谷JVM#1 Immutable時代のプログラミング言語 Clojure
渋谷JVM#1 Immutable時代のプログラミング言語 Clojure
 
ビットコイン~原理からソースまで~
ビットコイン~原理からソースまで~ビットコイン~原理からソースまで~
ビットコイン~原理からソースまで~
 
わかってるフレームワーク Laravel
わかってるフレームワーク Laravelわかってるフレームワーク Laravel
わかってるフレームワーク Laravel
 
DockerをRed Hatはどのように見ているのか
DockerをRed Hatはどのように見ているのかDockerをRed Hatはどのように見ているのか
DockerをRed Hatはどのように見ているのか
 

More from Kentaro Inomata

『アプリケーション アーキテクチャ ガイド2.0』のガイド
『アプリケーション アーキテクチャ ガイド2.0』のガイド『アプリケーション アーキテクチャ ガイド2.0』のガイド
『アプリケーション アーキテクチャ ガイド2.0』のガイドKentaro Inomata
 
Bash on ubuntu on windows
Bash on ubuntu on windowsBash on ubuntu on windows
Bash on ubuntu on windowsKentaro Inomata
 
Agile Software Development (In Japan)
Agile Software Development (In Japan)Agile Software Development (In Japan)
Agile Software Development (In Japan)Kentaro Inomata
 
ASP.NET MVCとEntity Frameworkで作ってみた
ASP.NET MVCとEntity Frameworkで作ってみたASP.NET MVCとEntity Frameworkで作ってみた
ASP.NET MVCとEntity Frameworkで作ってみたKentaro Inomata
 
解題:私がJavaからCsharpに乗り換えた10の理由
解題:私がJavaからCsharpに乗り換えた10の理由解題:私がJavaからCsharpに乗り換えた10の理由
解題:私がJavaからCsharpに乗り換えた10の理由Kentaro Inomata
 

More from Kentaro Inomata (8)

『アプリケーション アーキテクチャ ガイド2.0』のガイド
『アプリケーション アーキテクチャ ガイド2.0』のガイド『アプリケーション アーキテクチャ ガイド2.0』のガイド
『アプリケーション アーキテクチャ ガイド2.0』のガイド
 
Bash on ubuntu on windows
Bash on ubuntu on windowsBash on ubuntu on windows
Bash on ubuntu on windows
 
Agile Software Development (In Japan)
Agile Software Development (In Japan)Agile Software Development (In Japan)
Agile Software Development (In Japan)
 
RESTful Webサービス
RESTful WebサービスRESTful Webサービス
RESTful Webサービス
 
Azureといえば
AzureといえばAzureといえば
Azureといえば
 
ASP.NET MVCとEntity Frameworkで作ってみた
ASP.NET MVCとEntity Frameworkで作ってみたASP.NET MVCとEntity Frameworkで作ってみた
ASP.NET MVCとEntity Frameworkで作ってみた
 
釣りの楽しみ
釣りの楽しみ釣りの楽しみ
釣りの楽しみ
 
解題:私がJavaからCsharpに乗り換えた10の理由
解題:私がJavaからCsharpに乗り換えた10の理由解題:私がJavaからCsharpに乗り換えた10の理由
解題:私がJavaからCsharpに乗り換えた10の理由
 

Recently uploaded

論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 

Recently uploaded (10)

論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 

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