New graph algoritm
This commit is contained in:
parent
977f9b7402
commit
1a44b5c82b
@ -193,7 +193,10 @@ def gena():
|
|||||||
resx,resy=400,400
|
resx,resy=400,400
|
||||||
canvas = Canvas(root,background=bg_color,highlightbackground=bg_color)
|
canvas = Canvas(root,background=bg_color,highlightbackground=bg_color)
|
||||||
canvas.pack(fill="both", expand=True)
|
canvas.pack(fill="both", expand=True)
|
||||||
a=ggraph(n, xn, yn)
|
while True:
|
||||||
|
a=ggraph(n, xn, yn)
|
||||||
|
if a!=None:
|
||||||
|
break
|
||||||
Xcoordinates,Ycoordinates,Xnull_coordinates,Ynull_coordinates=anonim(n,xn,yn,a,resx,resy)
|
Xcoordinates,Ycoordinates,Xnull_coordinates,Ynull_coordinates=anonim(n,xn,yn,a,resx,resy)
|
||||||
def draw(n,xn,yn,Xcoordinates,Ycoordinates,Xnull_coordinates,Ynull_coordinates):
|
def draw(n,xn,yn,Xcoordinates,Ycoordinates,Xnull_coordinates,Ynull_coordinates):
|
||||||
for i in range (xn): #кол-во линий
|
for i in range (xn): #кол-во линий
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
import random
|
import random,time
|
||||||
def graph(x,y): #Создаём двумерный массив, заполненный гулями
|
def graph(x,y): #Создаём двумерный массив, заполненный гулями
|
||||||
a = []
|
a = []
|
||||||
for i in range(y):
|
for i in range(y):
|
||||||
@ -9,30 +9,28 @@ def graph(x,y): #Создаём двумерный массив, заполне
|
|||||||
|
|
||||||
def ggraph(n,xn,yn):
|
def ggraph(n,xn,yn):
|
||||||
m = 0
|
m = 0
|
||||||
xym = [xn,yn]
|
|
||||||
b = graph(xn, yn)
|
b = graph(xn, yn)
|
||||||
av = [[-1,-1]]
|
av = [[-1,-1]]
|
||||||
try:
|
masx = [i for i in range(0,xn)]
|
||||||
masx = [i for i in range(2,xn)]
|
masy = [i for i in range(0,yn)]
|
||||||
masy = [i for i in range(2,yn)]
|
timing = time.time()
|
||||||
except:
|
|
||||||
masx = [1]
|
|
||||||
masy = [1]
|
|
||||||
while m < n+1:
|
while m < n+1:
|
||||||
x = random.randint(0, xn-1)
|
x = random.randint(0, xn-1)
|
||||||
y = random.randint(0, yn-1)
|
y = random.randint(0, yn-1)
|
||||||
x0 = av[len(av)-1][0]
|
x0 = av[len(av)-1][0]
|
||||||
y0 = av[len(av)-1][1]
|
y0 = av[len(av)-1][1]
|
||||||
a = [x0,y0,x,y]
|
a = [x0,y0,x,y]
|
||||||
if (b[y][x] == 0) and (((abs(a[0]-a[2])==1 and (abs(a[1]-a[3]) in masy) ) or (abs(a[1]-a[3])==1 and abs(a[0]-a[2]) in masx)) or ((a[0] == a[2] or a[0]+1 == a[2] or a[0]-1 == a[2]) and (a[1] == a[3] or a[1]+1 == a[3] or a[1]-1 == a[3])) )or (x0==-1 and y0==-1):
|
if not((abs(x-x0)==abs(y-y0) and abs(y-y0)!=1)or (y==y0 and abs(x-x0)!=1) or (x==x0 and abs(y-y0)!=1)) and x0 in masx and y0 in masy and x in masx and y in masy and (b[y][x] == 0) or (x0==-1 and y0==-1):
|
||||||
b[y][x] = m
|
b[y][x] = m
|
||||||
av.append([x,y])
|
av.append([x,y])
|
||||||
m += 1
|
m += 1
|
||||||
|
|
||||||
|
if time.time() - timing > 0.06:
|
||||||
|
b = None
|
||||||
|
break
|
||||||
else:
|
else:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
|
||||||
return b
|
return b
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user