user3897269
user3897269

Reputation: 3

Finding or arranging all combinations of given numbers

I hope all you are doing great. I have an interesting question, which has stuck me. Its about generating combinations in a precise order. For example i have 4 variables(can be vary) and these 4 variables has some limit to increase for example in this case 2. so i want to generate 2d matrix in a order as:


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.

the number of variables ( in this case 4 ) can be varied and also the maximum limit ( in this case 4) can be varied. Even i have also find all possible combinations but i am not able to arrange them in this sequence. it would be great if somebody gives an answer. cheers!

Upvotes: 0

Views: 124

Answers (1)

Dale Hagglund
Dale Hagglund

Reputation: 16440

I'm going to assume you've got n variables, each of which is allowed to range from 0 to b-1. What you want is just counting n-digit numbers in base b. For example, if n = 2 and b = 3, then the sequence you want to produce is

00
01
02
10
11
12
20
21
22

To implement this, write a loop something like the following: (warning: untested code)

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

If you look carefully at how this works, you should see how to generalize it if your variables have different upper bounds.

Upvotes: 0

Related Questions