import json
import sys
import sys
import random
sys.setrecursionlimit(1000000) #
all_start='0_0'
all_end='10000_100000'
index=[]
re={}
visited=[]
ans=[]
G={}
def read_source(): #
# with open("rmonMap.json",'r') as load_f:
#with open("map.json",'r') as load_f:
with open("shanghai.json",'r') as load_f:
load_dict = json.load(load_f)
data=load_dict
for i,j in data.items():
if i=="Map":
data_v1=data[i]
for h,k in data_v1.items():
if h=="Cells":
re=data_v1[h]
return re
def create_graph(source):
route={}
ture=1
for i in range(0,len(source)):#len(source)=2
a=source[i]
index=0
for i,j in a.items():
if i=="X":
index_x=j
if i=="Y":
index_y=j
if i=="E" or i=="W" or i=="N" or i=="S":
index=index+1
arr_2=2
arr_3=3
for i,j in a.items():
if i=="Key":
order=j
if index==0:
route[j]={}
elif index==1:
route[j]={"E"}
elif index==2:
route[j]={"E","S"}
elif index==3:
route[j]={"E","S","W"}
elif index==4:
route[j]={"E","S","W","N"}
else:
route[j]={}
for p ,j in a.items():
if j==str(order):
arr=list(route[j])
arr_2=arr_2-1
for i,j in a.items():
if i=="E":
E_X=index_x+1
c=str(E_X)+"_"+str(index_y)
if index==4:
arr[0]=c
if index==1:
arr[0]=c
if index==2:
arr[arr_2]=c
arr_2=arr_2-1
if index==3:
arr_3=arr_3-1
arr[arr_3]=c
if i=="S":
E_Y=index_y+1
c=str(index_x)+"_"+str(E_Y)
if index==4:
arr[1]=c
if index==1:
arr[0]=c
if index==2:
arr[arr_2]=c
arr_2=arr_2-1
if index==3:
arr_3=arr_3-1
arr[arr_3]=c
if i=="W":
E_X=index_x-1
c=str(E_X)+"_"+str(index_y)
if index==4:
arr[2]=c
if index==1:
arr[0]=c
if index==2:
arr[arr_2]=c
arr_2=arr_2-1
if index==3:
arr_3=arr_3-1
arr[arr_3]=c
if i=="N":
E_Y=index_y-1
c=str(index_x)+"_"+str(E_Y)
if index==4:
arr[3]=c
if index==1:
arr[0]=c
if index==2:
arr[arr_2]=c
arr_2=arr_2-1
if index==3:
arr_3=arr_3-1
arr[arr_3]=c
for i , j in route.items():
if i==str(order):
route[order]=arr
return route# zhi yu xia dui ying ke yi dao da de dian
index=[]
for i,j in G.items():
if len(j)==0:
del G[i]
def com(a,b):
flag=[]
for i in range(0,len(b)):
flag.append(0)
for j in range(0,len(a)):
if b[i]==a[j]:
flag[i]=1
break
for i in range(0,len(b)):
if flag[i]==0:
print("***********error************")
b.remove(b[i])
return b
def check_graph(graph):
a=[]
b=[]
c=[]
for i,j in graph.items():
a.append(i)
for i,j in graph.items():
b.append(j)
for n in b:
data=n
for y in data:
c.append(y)
c=com(a,c)
graph[i]=c
b=[]
c=[]
return graph
def oriation(a):
a_=0
con_a=a_con=''
a=list(a)
for i in range(0,len(a)-1):
if a[i]=='_':
a_=i
for i in range(0,len(a)):
if i<a_:
a_con=a_con+a[i]
elif i>a_:
con_a=con_a+a[i]
return int(a_con),int(con_a)
def create_oriation(a,b):
a,b=str(a),str(b)
a_=b_=0
con_a=con_b=a_con=b_con=''
a,b=list(a),list(b)
for i in range(0,len(a)-1):
if a[i]=='_':
a_=i
for i in range(0,len(b)-1):
if b[i]=='_':
b_=i
for i in range(0,len(a)):
if i<a_:
a_con=a_con+a[i]
elif i>a_:
con_a=con_a+a[i]
for i in range(0,len(b)):
if i<b_:
b_con=b_con+b[i]
elif i>b_:
con_b=con_b+b[i]
if a_con == b_con and abs(int(con_a)-int(con_b))==1:
return True
elif con_a==con_b and abs(int(a_con)-int(b_con))==1:
return True
else:
return False
def sort_vector(key):
te=[]
ans=[]
test={}
for i in range(0,len(key)):
add=0
i_con,con_i=oriation(key[i])
add=int(i_con)+int(con_i)
te.append(add)
test[key[i]]=add
quick_sort(te,0,len(te)-1)
for i in range(0,len(te)):
for h,j in test.items():
if te[i]==j:
ans.append(h)
break
return ans
def quick_sort(mylist,start,end):
if start<end:
i,j=start,end
base = mylist[i]
while i<j:
while(i<j) and (mylist[j]>=base):
j=j-1
mylist[i]=mylist[j]
while(i<j) and (mylist[i]<=base):
i=i+1
mylist[j]=mylist[i]
mylist[i]=base
quick_sort(mylist,start,i-1)
quick_sort(mylist,i+1,end)
return mylist
def main():
re=read_source()
G=create_graph(re)
print("G:",G,len(G))
G=check_graph(G)
print(len(G))
for i,j in G.items():
index.append(i)
x12=[]
print("index:",index,len(index))
x16=[]
x17=[]
x18=[]
for j in range(11,50):#X 的取值范围
name=str(j)
name=[]
for i in range(0,len(index)):
i_con,con_i=oriation(index[i])
if i_con==j:
name.append(index[i])
name=sort_vector(name)
print("name:",name,len(name))
main()
将图中所有点,以x的值为依据进行分类
猜你喜欢
转载自blog.csdn.net/weixin_42528089/article/details/90674846
今日推荐
周排行