Нахождение или расположение всех комбинаций заданных чисел

Я надеюсь, что все у вас хорошо получается. У меня есть интересный вопрос, который застрял у меня. Речь идет о генерации комбинаций в точном порядке. Например, у меня есть 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

Если вы внимательно посмотрите, как это работает, вы должны увидеть, как это обобщить, если ваши переменные имеют разные верхние границы.

Другие вопросы по тегам