質問: Perlで任意の文字列のアナグラム全パターン検出を行いたいと考えています。 ・Perlで ・任意文字数の単語から、 ・検出される全アナグラムパターンを、 ・全て生成するアルゴリズムを教えて下さい。 例えば、3文字の特定文字列「ABC」が対象の場合、 ABC、ACB、BAC、BCA、CAB、CBA という結果が返ってくるという具合です。 できれば、簡略化した処理でなく、 アルゴリズムが理解できるような書き方をされていると嬉しいです。 よろしくお願い申し上げます。
回答: 順列を求めるアルゴリズムと等価なので、Math::Combinatoricsを使ってできます。使い方は「Perlで順列組合せの問題を解く」を参考にして下さい。 「アルゴリズムが理解できるような書き方」という意味では、「Perlの順列生成ワンライナーを考える」に掲載されているスクリプトが参考になるでしょう。