Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

Why my recursive method to define a set of vecotrs doesn't work?

I'm writing a script to compute the numbers of vectors with a given property.

I would like it to work is as the following does, so adding a vector to the set at every cycle

T=[]
for j in GF(8):
   c=(j)
   T.append(j)
   print(T)

That gives the following output

[0]

[0, z3]

[0, z3, z3^2]

[0, z3, z3^2, z3 + 1]

[0, z3, z3^2, z3 + 1, z3^2 + z3]

[0, z3, z3^2, z3 + 1, z3^2 + z3, z3^2 + z3 + 1]

[0, z3, z3^2, z3 + 1, z3^2 + z3, z3^2 + z3 + 1, z3^2 + 1]

[0, z3, z3^2, z3 + 1, z3^2 + z3, z3^2 + z3 + 1, z3^2 + 1, 1]

(the print line only porpouse is to show you how I want my set to by build).

However the actual code does this:

  T=[]
  for j in GF(8):
  b=random_matrix(GF(8),1,3)
     b[0,0]=j
     T.append(b)
     print(T)

[[ 0 z3^2 z3^2 z3 + 1]]

[[ z3 z3^2 z3^2 z3 + 1], [ z3 z3^2 z3^2 z3 + 1]]

[[ z3^2 z3^2 z3^2 z3 + 1], [ z3^2 z3^2 z3^2 z3 + 1], [ z3^2 z3^2 z3^2 z3 + 1]]

[[z3 + 1 z3^2 z3^2 z3 + 1], [z3 + 1 z3^2 z3^2 z3 + 1], [z3 + 1 z3^2 z3^2 z3 + 1], [z3 + 1 z3^2 z3^2 z3 + 1]]

[[z3^2 + z3 z3^2 z3^2 z3 + 1], [z3^2 + z3 z3^2 z3^2 z3 + 1], [z3^2 + z3 z3^2 z3^2 z3 + 1], [z3^2 + z3 z3^2 z3^2 z3 + 1], [z3^2 + z3 z3^2 z3^2 z3 + 1]]

[[z3^2 + z3 + 1 z3^2 z3^2 z3 + 1], [z3^2 + z3 + 1 z3^2 z3^2 z3 + 1], [z3^2 + z3 + 1 z3^2 z3^2 z3 + 1], [z3^2 + z3 + 1 z3^2 z3^2 z3 + 1], [z3^2 + z3 + 1 z3^2 z3^2 z3 + 1], [z3^2 + z3 + 1 z3^2 z3^2 z3 + 1]]

[[z3^2 + 1 z3^2 z3^2 z3 + 1], [z3^2 + 1 z3^2 z3^2 z3 + 1], [z3^2 + 1 z3^2 z3^2 z3 + 1], [z3^2 + 1 z3^2 z3^2 z3 + 1], [z3^2 + 1 z3^2 z3^2 z3 + 1], [z3^2 + 1 z3^2 z3^2 z3 + 1], [z3^2 + 1 z3^2 z3^2 z3 + 1]]

[[ 1 z3^2 z3^2 z3 + 1], [ 1 z3^2 z3^2 z3 + 1], [ 1 z3^2 z3^2 z3 + 1], [ 1 z3^2 z3^2 z3 + 1], [ 1 z3^2 z3^2 z3 + 1], [ 1 z3^2 z3^2 z3 + 1], [ 1 z3^2 z3^2 z3 + 1], [ 1 z3^2 z3^2 z3 + 1]]

So intead of adding the new vector it turns the set into a copy of several vectors all equal to the new one.

What's the problem in my code? And how can I solve it?

Why my recursive method to define a set of vecotrs doesn't work?

I'm writing a script to compute the numbers of vectors with a given property.

I would like it to work is as the following does, so adding a vector to the set at every cycle

T=[]
T = []
for j in GF(8):
   c=(j)
c = (j)
   T.append(j)
   print(T)

That gives the following output

[0]

[0]
[0, z3]

z3] [0, z3, z3^2]

z3^2] [0, z3, z3^2, z3 + 1]

1] [0, z3, z3^2, z3 + 1, z3^2 + z3]

z3] [0, z3, z3^2, z3 + 1, z3^2 + z3, z3^2 + z3 + 1]

1] [0, z3, z3^2, z3 + 1, z3^2 + z3, z3^2 + z3 + 1, z3^2 + 1]

1] [0, z3, z3^2, z3 + 1, z3^2 + z3, z3^2 + z3 + 1, z3^2 + 1, 1]

1]

(the print line only porpouse purposeof the print is to show you how I want my set to by build).be built).

However the actual code does this:

 T=[]
T = []
  for j in GF(8):
  b=random_matrix(GF(8),1,3)
     b[0,0]=j
b = random_matrix(GF(8), 1, 3)
     b[0, 0] = j
     T.append(b)
     print(T)

[[     0   z3^2   z3^2 z3 + 1]]
[[    z3   z3^2   z3^2 z3 + 1], [    z3   z3^2   z3^2 z3 + 1]]
[[  z3^2   z3^2   z3^2 z3 + 1], [  z3^2   z3^2   z3^2 z3 + 1], [  z3^2   z3^2   z3^2 z3 + 1]]
[[z3 + 1   z3^2   z3^2 z3 + 1], [z3 + 1   z3^2   z3^2 z3 + 1], [z3 + 1   z3^2   z3^2 z3 + 1], [z3 + 1   z3^2   z3^2 z3 + 1]]
[[z3^2 + z3      z3^2      z3^2    z3 + 1], [z3^2 + z3      z3^2      z3^2    z3 + 1], [z3^2 + z3      z3^2      z3^2    z3 + 1], [z3^2 + z3      z3^2      z3^2    z3 + 1], [z3^2 + z3      z3^2      z3^2    z3 + 1]]
[[z3^2 + z3 + 1          z3^2          z3^2        z3 + 1], [z3^2 + z3 + 1          z3^2          z3^2        z3 + 1], [z3^2 + z3 + 1          z3^2          z3^2        z3 + 1], [z3^2 + z3 + 1          z3^2          z3^2        z3 + 1], [z3^2 + z3 + 1          z3^2          z3^2        z3 + 1], [z3^2 + z3 + 1          z3^2          z3^2        z3 + 1]]
[[z3^2 + 1     z3^2     z3^2   z3 + 1], [z3^2 + 1     z3^2     z3^2   z3 + 1], [z3^2 + 1     z3^2     z3^2   z3 + 1], [z3^2 + 1     z3^2     z3^2   z3 + 1], [z3^2 + 1     z3^2     z3^2   z3 + 1], [z3^2 + 1     z3^2     z3^2   z3 + 1], [z3^2 + 1     z3^2     z3^2   z3 + 1]]
[[     1   z3^2   z3^2 z3 + 1], [     1   z3^2   z3^2 z3 + 1], [     1   z3^2   z3^2 z3 + 1], [     1   z3^2   z3^2 z3 + 1], [     1   z3^2   z3^2 z3 + 1], [     1   z3^2   z3^2 z3 + 1], [     1   z3^2   z3^2 z3 + 1], [     1   z3^2   z3^2 z3 + 1]]

[[ 0 z3^2 z3^2 z3 + 1]]

[[ z3 z3^2 z3^2 z3 + 1], [ z3 z3^2 z3^2 z3 + 1]]

[[ z3^2 z3^2 z3^2 z3 + 1], [ z3^2 z3^2 z3^2 z3 + 1], [ z3^2 z3^2 z3^2 z3 + 1]]

[[z3 + 1 z3^2 z3^2 z3 + 1], [z3 + 1 z3^2 z3^2 z3 + 1], [z3 + 1 z3^2 z3^2 z3 + 1], [z3 + 1 z3^2 z3^2 z3 + 1]]

[[z3^2 + z3 z3^2 z3^2 z3 + 1], [z3^2 + z3 z3^2 z3^2 z3 + 1], [z3^2 + z3 z3^2 z3^2 z3 + 1], [z3^2 + z3 z3^2 z3^2 z3 + 1], [z3^2 + z3 z3^2 z3^2 z3 + 1]]

[[z3^2 + z3 + 1 z3^2 z3^2 z3 + 1], [z3^2 + z3 + 1 z3^2 z3^2 z3 + 1], [z3^2 + z3 + 1 z3^2 z3^2 z3 + 1], [z3^2 + z3 + 1 z3^2 z3^2 z3 + 1], [z3^2 + z3 + 1 z3^2 z3^2 z3 + 1], [z3^2 + z3 + 1 z3^2 z3^2 z3 + 1]]

[[z3^2 + 1 z3^2 z3^2 z3 + 1], [z3^2 + 1 z3^2 z3^2 z3 + 1], [z3^2 + 1 z3^2 z3^2 z3 + 1], [z3^2 + 1 z3^2 z3^2 z3 + 1], [z3^2 + 1 z3^2 z3^2 z3 + 1], [z3^2 + 1 z3^2 z3^2 z3 + 1], [z3^2 + 1 z3^2 z3^2 z3 + 1]]

[[ 1 z3^2 z3^2 z3 + 1], [ 1 z3^2 z3^2 z3 + 1], [ 1 z3^2 z3^2 z3 + 1], [ 1 z3^2 z3^2 z3 + 1], [ 1 z3^2 z3^2 z3 + 1], [ 1 z3^2 z3^2 z3 + 1], [ 1 z3^2 z3^2 z3 + 1], [ 1 z3^2 z3^2 z3 + 1]]

So intead instead of adding the new vector it turns the set set into a copy of several vectors all equal to the new one.

What's the problem in my code? And how can I solve it?

click to hide/show revision 3
None

Why my recursive method to define a set of vecotrs doesn't work?

I'm writing a script to compute the numbers of vectors with a given property.

I would like it to work is as the following does, so adding a vector to the set at every cycle

T = []
for j in GF(8):
   c = (j)
   T.append(j)
   print(T)

That gives the following output

[0]
[0, z3]
[0, z3, z3^2]
[0, z3, z3^2, z3 + 1]
[0, z3, z3^2, z3 + 1, z3^2 + z3]
[0, z3, z3^2, z3 + 1, z3^2 + z3, z3^2 + z3 + 1]
[0, z3, z3^2, z3 + 1, z3^2 + z3, z3^2 + z3 + 1, z3^2 + 1]
[0, z3, z3^2, z3 + 1, z3^2 + z3, z3^2 + z3 + 1, z3^2 + 1, 1]

(the only purposeof the print is to show how I want my set to be built).

However the actual code does this:

  T = []
  for j in GF(8):
  b = random_matrix(GF(8), 1, 3)
     b[0, 0] = j
     T.append(b)
     print(T)

[[     0   z3^2   z3^2 z3 + 1]]
[[    z3   z3^2   z3^2 z3 + 1], [    z3   z3^2   z3^2 z3 + 1]]
[[  z3^2   z3^2   z3^2 z3 + 1], [  z3^2   z3^2   z3^2 z3 + 1], [  z3^2   z3^2   z3^2 z3 + 1]]
[[z3 + 1   z3^2   z3^2 z3 + 1], [z3 + 1   z3^2   z3^2 z3 + 1], [z3 + 1   z3^2   z3^2 z3 + 1], [z3 + 1   z3^2   z3^2 z3 + 1]]
[[z3^2 + z3      z3^2      z3^2    z3 + 1], [z3^2 + z3      z3^2      z3^2    z3 + 1], [z3^2 + z3      z3^2      z3^2    z3 + 1], [z3^2 + z3      z3^2      z3^2    z3 + 1], [z3^2 + z3      z3^2      z3^2    z3 + 1]]
[[z3^2 + z3 + 1          z3^2          z3^2        z3 + 1], [z3^2 + z3 + 1          z3^2          z3^2        z3 + 1], [z3^2 + z3 + 1          z3^2          z3^2        z3 + 1], [z3^2 + z3 + 1          z3^2          z3^2        z3 + 1], [z3^2 + z3 + 1          z3^2          z3^2        z3 + 1], [z3^2 + z3 + 1          z3^2          z3^2        z3 + 1]]
[[z3^2 + 1     z3^2     z3^2   z3 + 1], [z3^2 + 1     z3^2     z3^2   z3 + 1], [z3^2 + 1     z3^2     z3^2   z3 + 1], [z3^2 + 1     z3^2     z3^2   z3 + 1], [z3^2 + 1     z3^2     z3^2   z3 + 1], [z3^2 + 1     z3^2     z3^2   z3 + 1], [z3^2 + 1     z3^2     z3^2   z3 + 1]]
[[     1   z3^2   z3^2 z3 + 1], [     1   z3^2   z3^2 z3 + 1], [     1   z3^2   z3^2 z3 + 1], [     1   z3^2   z3^2 z3 + 1], [     1   z3^2   z3^2 z3 + 1], [     1   z3^2   z3^2 z3 + 1], [     1   z3^2   z3^2 z3 + 1], [     1   z3^2   z3^2 z3 + 1]]

So instead of adding the new vector it turns the set into a copy of several vectors all equal to the new one.

What's the problem in my code? And how can I solve it?

Why my recursive method to define a set of vecotrs vectors doesn't work?

I'm writing a script to compute the numbers of vectors with a given property.

I would like it to work is as the following does, so adding a vector to the set at every cycle

T = []
for j in GF(8):
   c = (j)
   T.append(j)
   print(T)

That gives the following output

[0]
[0, z3]
[0, z3, z3^2]
[0, z3, z3^2, z3 + 1]
[0, z3, z3^2, z3 + 1, z3^2 + z3]
[0, z3, z3^2, z3 + 1, z3^2 + z3, z3^2 + z3 + 1]
[0, z3, z3^2, z3 + 1, z3^2 + z3, z3^2 + z3 + 1, z3^2 + 1]
[0, z3, z3^2, z3 + 1, z3^2 + z3, z3^2 + z3 + 1, z3^2 + 1, 1]

(the only purposeof the print is to show how I want my set to be built).

However the actual code does this:

  T = []
  for j in GF(8):
  b = random_matrix(GF(8), 1, 3)
     b[0, 0] = j
     T.append(b)
     print(T)

[[     0   z3^2   z3^2 z3 + 1]]
[[    z3   z3^2   z3^2 z3 + 1], [    z3   z3^2   z3^2 z3 + 1]]
[[  z3^2   z3^2   z3^2 z3 + 1], [  z3^2   z3^2   z3^2 z3 + 1], [  z3^2   z3^2   z3^2 z3 + 1]]
[[z3 + 1   z3^2   z3^2 z3 + 1], [z3 + 1   z3^2   z3^2 z3 + 1], [z3 + 1   z3^2   z3^2 z3 + 1], [z3 + 1   z3^2   z3^2 z3 + 1]]
[[z3^2 + z3      z3^2      z3^2    z3 + 1], [z3^2 + z3      z3^2      z3^2    z3 + 1], [z3^2 + z3      z3^2      z3^2    z3 + 1], [z3^2 + z3      z3^2      z3^2    z3 + 1], [z3^2 + z3      z3^2      z3^2    z3 + 1]]
[[z3^2 + z3 + 1          z3^2          z3^2        z3 + 1], [z3^2 + z3 + 1          z3^2          z3^2        z3 + 1], [z3^2 + z3 + 1          z3^2          z3^2        z3 + 1], [z3^2 + z3 + 1          z3^2          z3^2        z3 + 1], [z3^2 + z3 + 1          z3^2          z3^2        z3 + 1], [z3^2 + z3 + 1          z3^2          z3^2        z3 + 1]]
[[z3^2 + 1     z3^2     z3^2   z3 + 1], [z3^2 + 1     z3^2     z3^2   z3 + 1], [z3^2 + 1     z3^2     z3^2   z3 + 1], [z3^2 + 1     z3^2     z3^2   z3 + 1], [z3^2 + 1     z3^2     z3^2   z3 + 1], [z3^2 + 1     z3^2     z3^2   z3 + 1], [z3^2 + 1     z3^2     z3^2   z3 + 1]]
[[     1   z3^2   z3^2 z3 + 1], [     1   z3^2   z3^2 z3 + 1], [     1   z3^2   z3^2 z3 + 1], [     1   z3^2   z3^2 z3 + 1], [     1   z3^2   z3^2 z3 + 1], [     1   z3^2   z3^2 z3 + 1], [     1   z3^2   z3^2 z3 + 1], [     1   z3^2   z3^2 z3 + 1]]

So instead of adding the new vector it turns the set into a copy of several vectors all equal to the new one.

What's the problem in my code? And how can I solve it?

Why doesn't my recursive method to define code for creating a given set of vectors doesn't vecotrs work?

I'm writing a script to compute the numbers of vectors with a given property.

I would like it to work is as the following does, so adding a vector to the set at every cycle

T = []
for j in GF(8):
   c = (j)
   T.append(j)
   print(T)

That gives the following output

[0]
[0, z3]
[0, z3, z3^2]
[0, z3, z3^2, z3 + 1]
[0, z3, z3^2, z3 + 1, z3^2 + z3]
[0, z3, z3^2, z3 + 1, z3^2 + z3, z3^2 + z3 + 1]
[0, z3, z3^2, z3 + 1, z3^2 + z3, z3^2 + z3 + 1, z3^2 + 1]
[0, z3, z3^2, z3 + 1, z3^2 + z3, z3^2 + z3 + 1, z3^2 + 1, 1]

(the only purposeof the print is to show how I want my set to be built).

However the actual code does this:

  T = []
  for j in GF(8):
  b = random_matrix(GF(8), 1, 3)
     b[0, 0] = j
     T.append(b)
     print(T)

[[     0   z3^2   z3^2 z3 + 1]]
[[    z3   z3^2   z3^2 z3 + 1], [    z3   z3^2   z3^2 z3 + 1]]
[[  z3^2   z3^2   z3^2 z3 + 1], [  z3^2   z3^2   z3^2 z3 + 1], [  z3^2   z3^2   z3^2 z3 + 1]]
[[z3 + 1   z3^2   z3^2 z3 + 1], [z3 + 1   z3^2   z3^2 z3 + 1], [z3 + 1   z3^2   z3^2 z3 + 1], [z3 + 1   z3^2   z3^2 z3 + 1]]
[[z3^2 + z3      z3^2      z3^2    z3 + 1], [z3^2 + z3      z3^2      z3^2    z3 + 1], [z3^2 + z3      z3^2      z3^2    z3 + 1], [z3^2 + z3      z3^2      z3^2    z3 + 1], [z3^2 + z3      z3^2      z3^2    z3 + 1]]
[[z3^2 + z3 + 1          z3^2          z3^2        z3 + 1], [z3^2 + z3 + 1          z3^2          z3^2        z3 + 1], [z3^2 + z3 + 1          z3^2          z3^2        z3 + 1], [z3^2 + z3 + 1          z3^2          z3^2        z3 + 1], [z3^2 + z3 + 1          z3^2          z3^2        z3 + 1], [z3^2 + z3 + 1          z3^2          z3^2        z3 + 1]]
[[z3^2 + 1     z3^2     z3^2   z3 + 1], [z3^2 + 1     z3^2     z3^2   z3 + 1], [z3^2 + 1     z3^2     z3^2   z3 + 1], [z3^2 + 1     z3^2     z3^2   z3 + 1], [z3^2 + 1     z3^2     z3^2   z3 + 1], [z3^2 + 1     z3^2     z3^2   z3 + 1], [z3^2 + 1     z3^2     z3^2   z3 + 1]]
[[     1   z3^2   z3^2 z3 + 1], [     1   z3^2   z3^2 z3 + 1], [     1   z3^2   z3^2 z3 + 1], [     1   z3^2   z3^2 z3 + 1], [     1   z3^2   z3^2 z3 + 1], [     1   z3^2   z3^2 z3 + 1], [     1   z3^2   z3^2 z3 + 1], [     1   z3^2   z3^2 z3 + 1]]

So instead of adding the new vector it turns the set into a copy of several vectors all equal to the new one.

What's the problem in my code? And how can I solve it?

click to hide/show revision 6
retagged

Why doesn't my code for creating a given set of vecotrs work?

I'm writing a script to compute the numbers of vectors with a given property.

I would like it to work is as the following does, so adding a vector to the set at every cycle

T = []
for j in GF(8):
   c = (j)
   T.append(j)
   print(T)

That gives the following output

[0]
[0, z3]
[0, z3, z3^2]
[0, z3, z3^2, z3 + 1]
[0, z3, z3^2, z3 + 1, z3^2 + z3]
[0, z3, z3^2, z3 + 1, z3^2 + z3, z3^2 + z3 + 1]
[0, z3, z3^2, z3 + 1, z3^2 + z3, z3^2 + z3 + 1, z3^2 + 1]
[0, z3, z3^2, z3 + 1, z3^2 + z3, z3^2 + z3 + 1, z3^2 + 1, 1]

(the only purposeof the print is to show how I want my set to be built).

However the actual code does this:

  T = []
  for j in GF(8):
  b = random_matrix(GF(8), 1, 3)
     b[0, 0] = j
     T.append(b)
     print(T)

[[     0   z3^2   z3^2 z3 + 1]]
[[    z3   z3^2   z3^2 z3 + 1], [    z3   z3^2   z3^2 z3 + 1]]
[[  z3^2   z3^2   z3^2 z3 + 1], [  z3^2   z3^2   z3^2 z3 + 1], [  z3^2   z3^2   z3^2 z3 + 1]]
[[z3 + 1   z3^2   z3^2 z3 + 1], [z3 + 1   z3^2   z3^2 z3 + 1], [z3 + 1   z3^2   z3^2 z3 + 1], [z3 + 1   z3^2   z3^2 z3 + 1]]
[[z3^2 + z3      z3^2      z3^2    z3 + 1], [z3^2 + z3      z3^2      z3^2    z3 + 1], [z3^2 + z3      z3^2      z3^2    z3 + 1], [z3^2 + z3      z3^2      z3^2    z3 + 1], [z3^2 + z3      z3^2      z3^2    z3 + 1]]
[[z3^2 + z3 + 1          z3^2          z3^2        z3 + 1], [z3^2 + z3 + 1          z3^2          z3^2        z3 + 1], [z3^2 + z3 + 1          z3^2          z3^2        z3 + 1], [z3^2 + z3 + 1          z3^2          z3^2        z3 + 1], [z3^2 + z3 + 1          z3^2          z3^2        z3 + 1], [z3^2 + z3 + 1          z3^2          z3^2        z3 + 1]]
[[z3^2 + 1     z3^2     z3^2   z3 + 1], [z3^2 + 1     z3^2     z3^2   z3 + 1], [z3^2 + 1     z3^2     z3^2   z3 + 1], [z3^2 + 1     z3^2     z3^2   z3 + 1], [z3^2 + 1     z3^2     z3^2   z3 + 1], [z3^2 + 1     z3^2     z3^2   z3 + 1], [z3^2 + 1     z3^2     z3^2   z3 + 1]]
[[     1   z3^2   z3^2 z3 + 1], [     1   z3^2   z3^2 z3 + 1], [     1   z3^2   z3^2 z3 + 1], [     1   z3^2   z3^2 z3 + 1], [     1   z3^2   z3^2 z3 + 1], [     1   z3^2   z3^2 z3 + 1], [     1   z3^2   z3^2 z3 + 1], [     1   z3^2   z3^2 z3 + 1]]

So instead of adding the new vector it turns the set into a copy of several vectors all equal to the new one.

What's the problem in my code? And how can I solve it?