いつもプリキュアエンジニアになりたいと思っている46歳です。つまりこれはポエム枠です。
RustのマクロでPAIPの2章 A Rule-Based Solutionをやってみた
このアルゴリズムを使って、頭が悪そうなプリキュアの文章を作ってみました。マクロ定義などはそのままで、ルールだけ変更しました。
composite_rule!(sentence, ->, shubu, jutubu);
composite_rule!(shubu, ->, precure, joshi);
composite_rule!(jutubu, ->, syusyokubu, jutugo);
composite_rule!(precure, ->, pre, cure);
composite_rule!(syusyokubu, ->, obj, joshi2);
simple_rule!(joshi, ->, "は が");
simple_rule!(joshi2, ->, "が を と");
simple_rule!(jutugo, ->, "好き 戦う 会う 食べる");
simple_rule!(pre, ->, "キュア キュア キュア シャイニー");
simple_rule!(cure, ->, "ブラック ホワイト ルミナス マリン エール ミルキー");
simple_rule!(obj, ->, "ザケンナー たこやき キリヤくん カッパード");
単にcomposite_rule!(precure, ->, pre, cure);で面白いプリキュアできないかなと思っただけです。rustのマクロが上手く抽象度を上げているので、エラーに悩ませることなくルールを追加、修正できます。
このルールで先の実行してみると、頭悪そうなプリキュアの文章が無限に生成できます。やってから気が付いたんですが、ルールの再利用をしていないので適当にランダムに選んでいるだけですね。
キュア エール が たこやき を 戦う 。
シャイニー エール が キリヤくん を 食べる 。
キュア ミルキー は たこやき が 会う 。
キュア ホワイト が たこやき を 戦う 。
キュア ミルキー は ザケンナー と 戦う 。
キュア ブラック は キリヤくん を 会う 。
キュア マリン が たこやき と 食べる 。
キュア マリン は ザケンナー と 戦う 。
キュア ミルキー が カッパード と 会う 。
キュア エール が ザケンナー が 会う
キリヤくんが食べられてるけど、シャイニーエールという偽プリキュアなのでセーフ。
LSTMまで使わなくても、マルコフ連鎖でずいぶんまともになりそう。