mutate

413 days ago by bergdall

A = matrix(5,5) 
       
A[0,1]=1;A[0,2]=1;A[1,2]=1;A[0,3]=-1;A[1,3]=-1;A[0,4]=-1;A[1,4]=1; A[2,3]=2; A[1,0]=-1;A[2,0]=-1;A[2,1]=-1;A[3,0]=1;A[3,1]=1;A[4,0]=1;A[4,1]=-1; A[3,2]=-2; A 
       
[ 0  1  1 -1 -1]
[-1  0  1 -1  1]
[-1 -1  0  2  0]
[ 1  1 -2  0  0]
[ 1 -1  0  0  0]
[ 0  1  1 -1 -1]
[-1  0  1 -1  1]
[-1 -1  0  2  0]
[ 1  1 -2  0  0]
[ 1 -1  0  0  0]
# will mutate a SQUARE matrix B along the k-vertex def mutate(B,k): d = len(B.rows()) Bprime = matrix(d,d) #print Bprime for i in range(d): for j in range(d): if i == k or j == k: Bprime[i,j] = -B[i,j] else: if B[i,k] == 0: Bprime[i,j] = B[i,j] else: Bprime[i,j] = B[i,j]+(B[i,k]/abs(B[i,k]))*max(B[i,k]*B[k,j],0) return Bprime 
       
# stupid thing to remove repeats from a list def remove_repeats(stupid_list): seen=[] for X in stupid_list: if X not in seen: seen.append(X) return seen 
       
#break list of matrices into partition_num blocks, operate on each one by mutating along that number # e.g. fuckinpwn(...,2) will operate on half by mutating at 0 and half by mutating at 1. def fuckinpwn(input_list,partition_num): output_list = input_list for i in range(len(input_list)): k = (i % partition_num) output_list[i] = mutate(input_list[i],k) return output_list 
       
def how_many(matrix,n,k): m = k^n long_list=[] for i in range(m): long_list.append(matrix) for j in range(n): fuckinpwn(long_list,k) long_list.sort() return len(remove_repeats(long_list)) 
       
how_many(A,7,4) 
       
12
12
Z = matrix(9,9) 
       
Z[0,1]=1; Z[0,2]=1; Z[0,3]=-1; Z[0,4]=-1; Z[1,2]=1; Z[1,3]=-1; Z[1,4]=1; Z[2,3]=2; Z[4,5]=1; Z[4,6]=-1; Z[5,6]=1; Z[5,7]=1; Z[5,8]=-1 Z[6,7]=1; Z[6,8]=-1; Z[7,8]=2 for i in range(9): for j in range(i): Z[i,j]=Z[j,i] 
       
       
[ 0  1  1 -1 -1  0  0  0  0]
[ 1  0  1 -1  1  0  0  0  0]
[ 1  1  0  2  0  0  0  0  0]
[-1 -1  2  0  0  0  0  0  0]
[-1  1  0  0  0  1 -1  0  0]
[ 0  0  0  0  1  0  1  1 -1]
[ 0  0  0  0 -1  1  0  1 -1]
[ 0  0  0  0  0  1  1  0  2]
[ 0  0  0  0  0 -1 -1  2  0]
[ 0  1  1 -1 -1  0  0  0  0]
[ 1  0  1 -1  1  0  0  0  0]
[ 1  1  0  2  0  0  0  0  0]
[-1 -1  2  0  0  0  0  0  0]
[-1  1  0  0  0  1 -1  0  0]
[ 0  0  0  0  1  0  1  1 -1]
[ 0  0  0  0 -1  1  0  1 -1]
[ 0  0  0  0  0  1  1  0  2]
[ 0  0  0  0  0 -1 -1  2  0]
mutate(Z,2) 
       
[ 1  2 -1  1 -1  0  0  0  0]
[ 2  1 -1  1  1  0  0  0  0]
[-1 -1  0 -2  0  0  0  0  0]
[ 1  1 -2  4  0  0  0  0  0]
[-1  1  0  0  0  1 -1  0  0]
[ 0  0  0  0  1  0  1  1 -1]
[ 0  0  0  0 -1  1  0  1 -1]
[ 0  0  0  0  0  1  1  0  2]
[ 0  0  0  0  0 -1 -1  2  0]
[ 1  2 -1  1 -1  0  0  0  0]
[ 2  1 -1  1  1  0  0  0  0]
[-1 -1  0 -2  0  0  0  0  0]
[ 1  1 -2  4  0  0  0  0  0]
[-1  1  0  0  0  1 -1  0  0]
[ 0  0  0  0  1  0  1  1 -1]
[ 0  0  0  0 -1  1  0  1 -1]
[ 0  0  0  0  0  1  1  0  2]
[ 0  0  0  0  0 -1 -1  2  0]
mutate(Z,3) 
       
[-1  0  1  1 -1  0  0  0  0]
[ 0 -1  1  1  1  0  0  0  0]
[ 1  1  4 -2  0  0  0  0  0]
[ 1  1 -2  0  0  0  0  0  0]
[-1  1  0  0  0  1 -1  0  0]
[ 0  0  0  0  1  0  1  1 -1]
[ 0  0  0  0 -1  1  0  1 -1]
[ 0  0  0  0  0  1  1  0  2]
[ 0  0  0  0  0 -1 -1  2  0]
[-1  0  1  1 -1  0  0  0  0]
[ 0 -1  1  1  1  0  0  0  0]
[ 1  1  4 -2  0  0  0  0  0]
[ 1  1 -2  0  0  0  0  0  0]
[-1  1  0  0  0  1 -1  0  0]
[ 0  0  0  0  1  0  1  1 -1]
[ 0  0  0  0 -1  1  0  1 -1]
[ 0  0  0  0  0  1  1  0  2]
[ 0  0  0  0  0 -1 -1  2  0]