1 | initial version |
I am not sure i understand your question. If you want, for a given (n,k)
, get all the possible tuples (a_1, ..., a_n)
where 1 <= a_i <= k
for all i you can use Multidimensional enumeration:
sage: car = lambda n,k : cartesian_product_iterator([xrange(1,k+1) for i in range(n)])
sage: list(car(4,2))
[(1, 1, 1, 1),
(1, 1, 1, 2),
(1, 1, 2, 1),
(1, 1, 2, 2),
(1, 2, 1, 1),
(1, 2, 1, 2),
(1, 2, 2, 1),
(1, 2, 2, 2),
(2, 1, 1, 1),
(2, 1, 1, 2),
(2, 1, 2, 1),
(2, 1, 2, 2),
(2, 2, 1, 1),
(2, 2, 1, 2),
(2, 2, 2, 1),
(2, 2, 2, 2)]
2 | No.2 Revision |
I am not sure i understand your question. If you want, for a given (n,k)
, get all the possible tuples (a_1, ..., a_n)
where 1 <= a_i <= k
for all i you can use Multidimensional enumeration:
sage: car = lambda n,k : cartesian_product_iterator([xrange(1,k+1) for i in range(n)])
sage: list(car(4,2))
[(1, 1, 1, 1),
(1, 1, 1, 2),
(1, 1, 2, 1),
(1, 1, 2, 2),
(1, 2, 1, 1),
(1, 2, 1, 2),
(1, 2, 2, 1),
(1, 2, 2, 2),
(2, 1, 1, 1),
(2, 1, 1, 2),
(2, 1, 2, 1),
(2, 1, 2, 2),
(2, 2, 1, 1),
(2, 2, 1, 2),
(2, 2, 2, 1),
(2, 2, 2, 2)]
Note that i am creating an iterator and not a list, so that, if i do something like
sage: for i in car(1000,1000):
....: blabla(i)
the tuples are created on the fly and my memory won't get stuck.
3 | No.3 Revision |
I am not sure i understand your question. If you want, for a given (n,k)
, get all the possible tuples (a_1, ..., a_n)
where 1 <= a_i <= k
for all i you can use Multidimensional multidimensional enumeration:
sage: car = lambda n,k : cartesian_product_iterator([xrange(1,k+1) for i in range(n)])
sage: list(car(4,2))
[(1, 1, 1, 1),
(1, 1, 1, 2),
(1, 1, 2, 1),
(1, 1, 2, 2),
(1, 2, 1, 1),
(1, 2, 1, 2),
(1, 2, 2, 1),
(1, 2, 2, 2),
(2, 1, 1, 1),
(2, 1, 1, 2),
(2, 1, 2, 1),
(2, 1, 2, 2),
(2, 2, 1, 1),
(2, 2, 1, 2),
(2, 2, 2, 1),
(2, 2, 2, 2)]
Note that i am creating an iterator and not a list, so that, if i do something like
sage: for i in car(1000,1000):
....: blabla(i)
the tuples are created on the fly and my memory won't get stuck.