Closed n4o847 closed 3 years ago
良さげです!枝刈りNFA作成時に実験的に作ってみます
てかこれならばクラスを独自作成したほうがいいのか
ちょっとすでにやってみちゃってて、見てもらいたさがあります。
yuziroppe さんがアイデアがあるならそれはそれで気になりますが……
クラスを独自作成とはどういうことでしょう?
今構想としているのは(擬似コードですが)
class DirectProductState {
private stateList: [State,State];
getState() {
return stateList;
}
toString() {
return `${Array.from(stateSet).sort().join(', ')}`;
}
}
こんなイメージです 既に作っているなら是非見ます!
これだけじゃだめでオートマトン内での複数状態を表す処理を今書いていないことに気づいた
今 redefine_state_2 というブランチで 4d4c0a2d5525f5415730dafef85ad3e2198ca4df までやっているのですが、これをやると DFA 構築がかなりシンプルになったので直積でも楽になるんじゃないかという……(急いでてめっちゃ雑になってしまってすみません)
なるほどここまで書いてたんですね...すごい DFAの状態を具体的に明示できそうなのすごく助かります
こんな込み入った型パズルやっていいのかという背徳感が……
状態の集合が(今までの Q\d+
から {q\d+, q\d+, ...}
に変わったので)デバッグしやすくなってるのと、今までの _
方式と共存できるのでどうにでもできる感じではありますが、バシバシ変更が加わる事自体が申し訳なく……
いま masa5555 さんがIDA、 yuziroppe さんが枝刈り、ぼくが攻撃文字列というタスクを急いでいる現状で、無理にこの変更を加えるのはやばいので、いったん放置しておく、あるいはもっと漸進的に移行するようにする、というのがあります。
19 の続き
状態のタプル・集合を文字列操作することについて、
という補完的な性質があるので、これらを組み合わせるのが良い気がします。
構想としては
newStateToOldStateSet
とかなってるやつを(もうちょいいい名前に変えて)オートマトンに持たせる。getLeftState
など split する操作は使わないHogeBuilder.getState
など検索する操作は使わない(${leftState}, ${rightState})
、集合は{${Array.from(stateSet).sort().join(', ')}}
みたいにシリアライズするという感じです。