[Tutor] Tutor Digest, Vol 40, Issue 38
János Juhász
janos.juhasz at VELUX.com
Sat Jun 16 07:24:12 CEST 2007
Hi Andy,
> The code works great, Thanks for the speedy response. The only problem
> which I can see is that the code scales very bad with the size of n.
> So, as I want a small subsection of the data (i.e lines where there are
> only 4 1s, number in the code below) for a system where n is large(>20).
> The idea is that this would reduce the number of iterations dramatic
> despite the individual loop taking longer to operate.(see example data).
> I've modified the bit_list_maker to allow for this but it has started to
> produce rows which are identical.
> Can anyone make any suggestion/improvements to the code
I feel that you would use this table for something else than simple print
it.
It is probably a decision table.
As each cell of this table can be calculated anytime, I think to not store
it in
any big table with a lot of integers in each cell, but simple calculate it
at need.
You can save a lot of memory in that way.
If it is a decision table, I don't mind to starting the permutation on the
first col
instead of the last. It doesn't change the permutation itself, just its
order.
def Perm_matrix(row, col):
if (row & (2**col)): return 1
return 0
n = 4
for row in range(2**n):
for col in range(n):
print Perm_matrix(row, col),
print ';'
It is easy to turn it into a class.
class Perm:
def __init__(self, num):
self.rownum = 2**num
self.colnum = num
def Perm_matrix(self, row, col):
if (row & (2**col)): return 1
return 0
def __getitem__(self,(row,col)):
return self.Perm_matrix(row,col)
m = Perm(4)
for row in range(m.rownum):
for col in range(m.colnum):
print m[row, col],
print ''
Regards,
Janos
More information about the Tutor
mailing list