Rubyのメソッド名でしりとりやってみた

こんにちは。hiraです。 半月ほど前にNintendo Switchとマリオオデッセイを購入しました。 所謂箱庭アクションゲームが好きなので、マリオオデッセイは絶対面白いだろうなと思って購入しましたが、実際面白かったです。 「バンジョーとカズーイの大冒険」の精神的後継作と噂される「Yooka-Laylee」がSwitchで発売され、しかも日本語化されるらしいことがわかったので、それも今から楽しみです。 Japanese support will be coming to Switch via a post-launch update https://t.co/uvKKUiEwYv — Playtonic (@PlaytonicGames) December 5, 2017 しりとり みなさん「しりとり」を知っているでしょうか。知っていますよね? 「子供の遊戯」と侮るなかれ、単語の属性(動物しりとり等)や文字数に関して制限を加えればかなり高度な知的遊戯となります。 無制限で、有名な「る攻め」それに対抗する、ルール、ルノアール、ルミノール …を使った「る返し」で激しい攻防をしても面白いはずです。 前置きはこのくらいにして、今回はRubyの組み込みクラス・モジュールのpublicなメソッド名でしりとりをすることを考えてみます。 色々と遊ぶに当たって考慮する点を考えつつ、最終的には「最長しりとり問題」について答えを出したいと思います。 Rubyのバージョンは2.4.3として考えていきます。 辞書の準備 何はともあれ辞書が必要です。 以下のコードで取得できると思います。 irbやpryを使うとIRBやPRYクラス等が混入するので、rbファイルを使って実行する必要があります。 classes_and_modules = ObjectSpace.each_object.select do |object| (object.kind_of?(Class) || object.kind_of?(Module)) end words = classes_and_modules.flat_map { |c| c.methods + c.instance_methods } .uniq.map(&:to_s).select { … Continue reading Rubyのメソッド名でしりとりやってみた