Нахождение или расположение всех комбинаций заданных чисел
Я надеюсь, что все у вас хорошо получается. У меня есть интересный вопрос, который застрял у меня. Речь идет о генерации комбинаций в точном порядке. Например, у меня есть 4 переменные (могут быть разными), и у этих 4 переменных есть предел для увеличения, например, в этом случае 2. поэтому я хочу сгенерировать 2d матрицу в следующем порядке:
0 0 0 0
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
1 1 0 0
1 0 1 0
1 0 0 1
0 1 1 0
0 1 0 1
0 0 1 1
1 1 1 0
0 1 1 1
1 1 1 1
2 0 0 0
0 2 0 0
0 0 2 0
0 0 0 2
2 1 0 0
2 0 1 0
......
......
and so on.
количество переменных (в данном случае 4) может изменяться, а также может изменяться максимальный предел (в этом случае 4). Даже я также нашел все возможные комбинации, но я не могу расположить их в этой последовательности. было бы здорово, если бы кто-нибудь дал ответ. ура!
1 ответ
Я собираюсь предположить, что у вас есть n переменных, каждая из которых может варьироваться от 0 до b-1. То, что вы хотите, это просто считать n-значные числа в базе b. Например, если n = 2 и b = 3, то последовательность, которую вы хотите создать,
00
01
02
10
11
12
20
21
22
Чтобы реализовать это, напишите цикл примерно так: (предупреждение: непроверенный код)
def inc(v, b):
for i in range(len(v)):
v[i] = v[i] + 1
if v[i] < b:
break
v[i] = 0
def is_zero(v):
for i in range(len(v)):
if v[i] != 0:
return False
return True
v = [0, 0, 0]
b = 3
while True:
print(v)
inc(v, b)
if is_zero(v):
break
Если вы внимательно посмотрите, как это работает, вы должны увидеть, как это обобщить, если ваши переменные имеют разные верхние границы.