2012-04-23 4 views
2

나는 이것이 매우 간단하다고 확신하지만 이것을 수행하는 방법이 부족합니다. 본질적으로 P collumns와 V^P 행이있는 배열이있는 경우, 모든 조합을 채우려면 어떻게해야합니까? 즉 기본적으로 V 자리의 모든 가능한 숫자를 채울 수 있습니다. 예를 들어, P = 3 및 V = 2의 경우 :주어진 밑수와 자릿수에 대한 모든 가능한 순열 생성

000 
001 
010 
011 
100 
101 
110 
111 

int의 배열이 아니라 2 차원 배열임을 명심하십시오.

P = 4 및 V = 3 인 경우.

0000 
0001 
0002 
0010 
0011 
0012 
.... 

이 어레이가 생성되면, devolop을 시도하는 나머지 작업은 간단합니다. 그래서 이것을하는 방법에 대한 몇 가지 코드/팁을 가지고 크게 감사하겠습니다. 감사.

답변

0

첫 번째 열에는 숫자의 순서가 필요, P = 3, V = 2로 예를 촬영 :

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

그래서 당신은 기본적으로 원하는 4 개의 0의 4 일의 하였다. 두 번째 열에서

당신이 필요합니다
0, 0, 1, 1, 0, 0, 1, 1 

그래서 당신이 원하는 두 개의 0의 다시 같은 다음에,이 일의 하였다.

일반적으로 열 번호 n에서 각 숫자의 V^(P-n)을 V^(n-1) 번 반복해야합니다.

칼럼 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] 

이 시퀀스를 생성 일부 파이썬 코드 :

def sequence(v, p, column): 
    subsequence = [] 
    for i in range(v): 
     subsequence += [i] * v**(p - column) 
    return subsequence * v**(column - 1) 
관련 문제