TUERTA動画の補足

ということで今回も補足をやっていきます。
今回は動画というよりは前回の変な動画と今回までの話になります。

 

前回までのあらすじ
ルートをみんなの協力があって作ることができたぞ!さぁ頑張って探索するんだ!
あれ?どうやって探索すればいいんだ?膨大過ぎて頭おかしくなりそうなんだけど!?
以上

 

なぜ今までできなかったのか 解決した理由
使用した言語がPythonでライブラリ?(基本的な用語すら知らないレベル)がNetworkXなのですが、元々経路探索をするぞ!という事しか頭になく、経路探索の関数?(でいいのかな?)を呼び出すことしか考えていませんでした。あとそれ以外に検索で方法を見つけることもできなかったんですよね当時は。なぜか。
で動画の通りこのグラフだと全経路探索か最短探索しか使うことができなかったため、詰んでると思っていました。

そして復帰しようかってタイミングで久しぶりに調べ始めたところ。
サイトは言いませんが言語のつながり(連結)を探索するやりかた?というページからdfs_edgesという深さ優先探索と反復処理を見つけます。これが多分動画で説明した通りの挙動をするので、最終的に全部を見終わるようになるという事がわかりました。
これは使えると思い早速プログラムを改良して試したところ、ドンピシャ!やりたい事にしっくりきました。
ただ動画の通り途中反復しているところがあるのでそこは手動で修正しました。
で後は動画の通り手動で頑張って画像を作っておしまい!
以上です。
まぁ当時でも頑張って検索していたらさっさと結論が出ていたんじゃないかなと思ってはいます。

 

やり方の詳しい説明
多分もっと最適解はあるはずだけどこれが限界だった。説明間違えてたらごめんなさい。どこがどう間違ってるかもよくわかっていない。

まず動画の通りCSVにします。こうすることでcsv読み取りが使えるようになります。
そしてPandasのデータフレームを使います。csvをデータフレームに変換します。
データフレームをさらにリンクに1を置きそれ以外に0を置いたデータフレームBに変換します。
つまりこういう感じ、(VScodeの画面)

で、これ手動でやってもいいんですけど面倒だったので経路探索調べてた頃からこのままです。ちなみに今見たらこれの変換の仕方よくわからなくなりました。
で、データフレームBからグラフへ変換を行い、dfs_edgesを使う。
そうするとエッジ(リンク)のリストが生成されるのでそれをテキストに保存する。
そうすると動画で出してたようなのが出来上がる、
ちなみに左がそのエッジのスタートで右がゴールです。

大体こんな感じのことをしました。

 

RTAの話

大体動画で触れているのですが、現状操作精密でかつ記憶力最強な方じゃないと最速は目指せないんじゃないかなと思っています。
あと言い忘れていましたがこれはクリアまでの最速を目指すルートなので普通のRTAの定義に収めるならany%です。
100%はすべての(ランダムはどうするか検討中)隠しを通過したうえでクリアを目指す感じになります。
動画で言っていた通りエラーまで含めると(画像制作も含めて)地獄になりそうだったので今回はやめました。

今後やるであろう配信テストその2でRTAの実践をするかもしれません。
予定ってだけなのでできないかもしれません。

 

最後に

kanoguti様へ 今更こういうこと言うのもなんですが、こんな遊び方をしてしまい申し訳ありません。

以上で今回の補足を終わります