配列から網羅的な文字列を生成するには?
perlの配列を使った、網羅的な文字列生成について質問です。
ある特定の種類の文字のレパートリをつかった、n文字の文字列すべての組み合わせを生成したいと考えています。
例えば文字 A, B, C の三種類をつかった2文字の文字列なら
AA,AB,AC,BA,BB,BC,CA,CB,CC
3x3 =9 種類というふうになります。
n=2の場合、
@array = qw(A B C);
foreach $moji(@array){
$moji1 = $moji;
foreach $moji(@array){
$moji2 = $moji;
$mojiretu = $moji1.$moji2;
push (@mojiretuset , $mojiretu );
}}
print @mojiretuset;
とするとforeachをふたつ重ねることで文字の組み合わせすべてを生成できました。
問題なのは、問題なのは、今私がしたいのは文字数nを(ループの)外から指定して(例えば$mojisuu = 6 などとして)n文字の場合の網羅的な文字の組み合わせを生じさせることなのです。
毎回自分でforeachを必要なだけ重ねて書き直す、というのは現実的ではありませんし、n個のforeachの入ったperlのコードを書くコードというのも避けたいのです。
文字数を自由に後から設定して、特定の配列から網羅的な組み合わせを生じさせるにはどのようなコードを書けばよいでしょうか?