バラバラの文字の束からアナグラムを見つける必要があるいくつかのゲームでは、可能なすべてのアナグラムを見つけて、必要に応じてそれらを既知の文字位置にフィルターする順列アルゴリズムを実装することになりまし-matchた (ちなみに、これは素晴らしいことです)。しかし、意味不明な単語の膨大なリストをざっと読んでも、その中に隠されていた適切な単語が実際には明らかにならないため、長い単語の場合、これは非常にエラーが発生しやすいことがわかりました。
そこで、英語の単語の大きなリスト (どこかで入手できるはずです) があれば、順列のリストと適切な単語のリストを交差させて、(できれば) 順列リストからすべての実際の単語を取得できると考えました。
PS の多くの演算子はコレクションに対して異なる働きをするので、次のようなことができると思いました。
$wordlist -contains $permlist
そして交差点を戻します。残念ながら、それはそれほど簡単ではありません。私が考えた他のオプションは、1つのリストを繰り返し処理し-contains、各項目に対して実行することです:
$permlist | ? { $wordlist -contains $_ }
これはおそらく機能しますが、非常に遅いと思います(特に$wordlistが a の結果である場合gc wordlist.txt)。または、巨大な正規表現を作成することもできます。
$wordlist -matches (($permlist | %{ "^$_`$" }) -join "|")
しかし、それもおそらくそれほど速くはありません。上記の巨大な正規表現でも使用できるかもしれませんfindstrが、それは間違っていると感じています。
使用できる組み込みのソリューションはありますか?これまでの試みよりも優れていますか? それ以外の場合は、おそらく単語リストをハッシュテーブルに入れて、-contains十分に高速な反復アプローチを使用します。