2

ベクトルのすべての可能な組み合わせを表示する問題をどのように解決できますか

x ="abcdefghijklmnopqrstuvwxyz"

その中で私はそれを自分で掛けます。私はこのような解決策が欲しい:

"aa","ab","ac",..."za","zb",.."zz" 

すべての要素にインデックスを付けることができます。

また、同じ乗算の解を求めます。ここで、3つおよび4つの同一のxベクトルの結果が得られます。つまり、解は次のようになります。

"aaa","aab"..."zzz" and "aaaa","aaab",..."zzzz"
4

2 に答える 2

3

機能を試してみてくださいndgrid()。その結果は、出力引数の数によって異なります。これは、繰り返しを伴う3のすべてのセットの答えです

octave> [x y z] = ndgrid ("abcdef");
octave> allcombs = [x(:) y(:) z(:)];

かなり長いので、結果は印刷しません。関数ndgrid()perms()、およびnchoosek()をいじると、この種の問題を非常に簡単に解決できます。

長さ n の場合は、 を使用しますnthargout()

octave> cart  = nthargout ([1:n], @ndgrid, "abcdef");
octave> combs = cell2mat (cellfun (@(c) c(:), cart, "UniformOutput", false));
于 2013-03-09T15:09:33.817 に答える
0

文字を整数にマップする場合(toasciiを参照)、25を底とする数値を追加することですべての組み合わせを生成できます(toascii('z')-toascii('a'))。たとえば、0->'a'、25->'z'、26->'ba'などです。

このようにして、すべての組み合わせを順番に生成します

于 2013-03-09T12:05:03.400 に答える