「ゲーデル、エッシャー、バッハ」第 2 章の MIU システムの問題に取り組んでいます。
ルールの状態の 1 つ
Rule III: If III occurs in one of the strings in your collection, you may make a new string with U in place of III.
これは、文字列MIII
が になる可能性があることを意味しますMU
が、他の長い文字列の場合、複数の可能性があります [括弧内の一致]:
MIIII
譲ることができたM[III]I
>>MUI
MI[III]
>>MIU
MUIIIUIIIU
譲ることができたMU[III]UIIIU
>>MUUUIIIU
MUIIIU[III]U
>>MUIIIUUU
MUIIIIU
譲ることができたMU[III]IU
>>MUUIU
MUI[III]U
>>MUIUU
などの正規表現は明らか/(.*)III(.*)/
に役に立ちますが、可能性のあるすべての一致を生成するようにそれらを取得することはできないようです。たまたま最初に見つかったものだけです。
可能なすべての一致を生成する方法はありますか?
(注、これを完全に手動で行う方法を考えることができますが、組み込みツール、正規表現などを使用するより良い方法があることを願っています)
(重複するニーズを明確にするために編集されました。)