Perlで任意の文字列のアナグラム全パターン検出を行いたいと考えています。


・Perlで
・任意文字数の単語から、
・検出される全アナグラムパターンを、
・全て生成するアルゴリズムを教えて下さい。

例えば、3文字の特定文字列「ABC」が対象の場合、
ABC、ACB、BAC、BCA、CAB、CBA
という結果が返ってくるという具合です。

できれば、簡略化した処理でなく、
アルゴリズムが理解できるような書き方をされていると嬉しいです。

よろしくお願い申し上げます。

回答の条件
  • URL必須
  • 1人3回まで
  • 登録:
  • 終了:2009/08/24 07:40:02
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:pahoo No.1

回答回数5960ベストアンサー獲得回数633

ポイント60pt

順列を求めるアルゴリズムと等価なので、Math::Combinatoricsを使ってできます。使い方は「Perlで順列組合せの問題を解く」を参考にして下さい。


「アルゴリズムが理解できるような書き方」という意味では、「Perlの順列生成ワンライナーを考える」に掲載されているスクリプトが参考になるでしょう。

  • id:atemiya
    Pahooさんの順列組み合わせと等価というのが非常に参考になりました。
    しかしイメージとしては、様々なアルゴリズムを提示して頂いた上で、
    そのなかで速度などの長所・欠点などを知りたかったです。
    何はともあれ、初期問題は解決しました。
    遅くなりましたが、Pahooさんご回答ありがとうございました。
    いずれ、またこの質問と答えを理解してから、発展した同系統のご質問をさせて頂くかも知れません。
    その節は、どうかよろしくお願い申し上げます。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません