2012-04-23 13 views
2

私はこれはかなりシンプルだと確信していますが、私はこれを行う方法を困惑しています。基本的にP列とV^P行の配列がある場合、どのようにしてすべての組み合わせ、つまり本質的にP桁の基底V内のすべての可能な数を塗りつぶすことができます。たとえば、P = 3およびV = 2の場合:与えられた基数と桁数のすべての可能な順列を生成する

000 
001 
010 
011 
100 
101 
110 
111 

これは2次元配列であり、intの配列ではないことに注意してください。

P = 4およびV = 3の場合。

0000 
0001 
0002 
0010 
0011 
0012 
.... 

この配列が生成されたが、私はdevolopしようとしている何のために仕事の残りの部分は簡単です。だから、これを行う方法に関するいくつかのコード/ヒントを持っていると大いに感謝します。ありがとう。 P = 3、V = 2とあなたの例を取ると

答えて

0

は、最初の列に、あなたは数字のこのシーケンスを必要とする:

0, 0, 0, 0, 1, 1, 1, 1 

は、だから、基本的に4 0 4 1の続くが欲しいです。あなたが必要とする2番目の列に

0, 0, 1, 1, 0, 0, 1, 1 

だから、2 0のは、再び同じに続いて、2つの1つの続くたいです。

一般に列番号nでは、V ^(n-1)回繰り返された各桁のV ^(P-n)が必要です。

カラム1:

P = 3かつV = 2例我々は必要V ^(PN)= 2 ^(3-1)=各桁の4、繰り返しV ^(N-1) = 2^0 = 1回:

[0, 0, 0, 0, 1, 1, 1, 1] 

カラム2:繰り返しV ^(N-1)= 2 ^、我々は、V ^(PN)必要=各桁の2 ^(3-2)= 2 1 = 2回:

[0, 0, 1, 1], [0, 0, 1, 1] 

カラム3:我々は必要V ^(PN)=各桁の2 ^(3-3)= 1、繰り返しV ^(N-1)= 2^2 = 4時間:

[0, 1], [0, 1], [0, 1], [0, 1] 

このシーケンスを生成するいくつかのPythonコード:

def sequence(v, p, column): 
    subsequence = [] 
    for i in range(v): 
     subsequence += [i] * v**(p - column) 
    return subsequence * v**(column - 1) 
関連する問題