2012-05-01 8 views
-1

可能性の重複:
Algorithm to return all combinations of k elements from n
Generate Distinct Combinations PHPシード文字列のすべてのユニークな4文字の順列を生成するには?

私は文字の数を含む配列を持っている/手紙、S例えば:

$seed = array('a','b','c','d','e','f',.....,'z','1','2','3',...'9'); 

私はすべてを取得したいですシードからの一意の4文字の組み合わせ/置換の可能性があります。例:

abcd, azxy, ag12, aaaa, etc 

これを行うにはどうすればよいですか?

シード配列を4つの文字グループに分割し、各グループを通過してそのグループのすべての組み合わせを生成することを考えましたが、それは多くの組み合わせを除外します(abcdとwxyzは処理しますが、abyzは処理しません) wxcd)

+2

あなたは組み合わせや順列を意味しますか? – ninjagecko

+0

@ ninjageckoどのように4文字が35の順列になりますか? – sehe

+0

@sehe:k-permutationと呼ばれています –

答えて

1

配列の各文字について、その文字の後ろに、固有の3文字の文字列の後ろの文字(実際には組み合わせを意味する場合)またはすべての文字もしかして)。

シード文字列のすべてのユニークな3文字の順列を生成するにはどうすればよいですか?

this very similar questionを参照してください。

recursionについてもお読みください。

Pythonコード

>>> def product(chars, n): 
     if n == 0: 
      yield '' 
     else: 
      for c in chars: 
       for result in product(x, n - 1): # Recursive call 
        yield c + result 

>>> list(product(['a', 'b', 'c'], 2)) 
['aa', 'ab', 'ac', 'ba', 'bb', 'bc', 'ca', 'cb', 'cc'] 

(注:実際のPythonコードで、あなたはそれを自分で書くのではなく、itertools.productを使用する必要があります。)

+0

これは私の質問には答えません –

+2

@ClickUpvote:これはあなたの質問に答えることができない場合、あなたの質問を明確にする必要があります。書かれた。 –

+0

@OliCharlesworth「3つのユニークな順列を生成する」と言うと、「ユニークな順列を生成する方法」という質問にどのように答えますか?彼がそれを明確にするためのコードサンプルを与えるならば、私は理解するかもしれない。 –

0

生成順列は、数字を合計のようなものです。これは自由に利用できる本で美しく説明されていますHigher Order Perl、128ページ

関連する問題