2012-04-23 3 views
2

Я уверен, что это довольно просто, но я в тупике, чтобы сделать это. По сути, если у меня есть массив с столбцами P и V^P строк, как я могу заполнить все комбинации, то есть, по существу, все возможные числа в базе V из цифр P. Например, при Р = 3 и V = 2:Создание всех возможных перестановок для заданной базы и количества цифр

000 
001 
010 
011 
100 
101 
110 
111 

иметь в виду, что это 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 

Таким образом, вы по существу хотите четыре 0, сопровождаемого четыре 1-х.

Во второй колонке вам нужно:

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

Итак, вы хотите два 0, сопровождаемые два 1-х, а затем то же самое снова.

В общем случае, в столбце n, вам нужно V^(P-n) каждой цифры, повторение V^(n-1) раз.

Пример, когда р = 3 и V = 2:

Колонка 1: Мы должны V^(Р) = 2^(3-1) = 4 из каждой цифры, повторяется V^(N-1) = 2^0 = 1 раз:

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

Колонка 2: Мы должны V^(Р) = 2^(3-2) = 2 каждой цифры, повторяется V^(п-1) = 2^1 = 2 раза:

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

Колонка 3: Нам необходимо V^(Р) = 2^(3-3) = 1 из каждой цифры, повторяется V^(п-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) 
Смежные вопросы