SHARE
TWEET

Untitled

a guest May 21st, 2019 57 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #importation des modules pythons
  2. import random as r
  3. import tkinter as tki
  4. from math import *
  5. import copy
  6.  
  7.  
  8. #crée des noeuds a des positions aléatoires
  9. def coo (n,min):
  10.     res=[]
  11.     for i in range (n):
  12.         x=r.randint (100,900)
  13.         y=r.randint (100,900)
  14.         while espace (x,y,min,res):
  15.             x=r.randint (100,900)
  16.             y=r.randint (100,900)  
  17.            # print (i)        
  18.         res.append([x,y])
  19.     return (res)
  20.  
  21.  
  22. #teste l'espacement entre un point et tous ceux déjà générés
  23. def espace (x,y,min,res):
  24.     bool=False
  25.     for j in range (len (res)):
  26.         if sqrt((x-res[j][0])**2+(y-res[j][1])**2)<4*min:
  27.             bool=True
  28.     return (bool)
  29.  
  30.  
  31. #infini est la somme de tous les chemins+1, aucun chemin ne peut depasser cette longueur ce qui suffit à représenter l'infini pour dijkstra
  32. def infini (mat):
  33.     inf=0
  34.     for i in range (len (mat)):
  35.         for j in range (len (mat)):
  36.             inf=inf+mat[i][j]
  37.     return (inf)
  38.    
  39.    
  40. #distance entre 2 points a et b
  41. def distance (a,b):
  42.     return (sqrt((a[0]-b[0])**2+(a[1]-b[1])**2))
  43.    
  44.  
  45. #matrice des distances  
  46. def distances (coos):
  47.     n=len (coos)
  48.     mat=[[0 for i in range (n)]for j in range (n)]
  49.     for i in range (n):
  50.         for j in range (n):
  51.             mat[i][j] = distance (coos[i],coos[j])
  52.     return mat
  53.    
  54.  
  55. #trouve les indices de nb points les plus proches
  56. def indi_min (m,nb):
  57.     n=len (m)
  58.     infi=infini (m)
  59.     minis=[[0 for i in range (nb)]for j in range (n)]
  60.     for i in range (n):
  61.         mini=[infi for k in range (nb)]
  62.         for j in range (n):
  63.             k=0
  64.             pasmin=True
  65.             while k<nb and pasmin:
  66.                 if mini[k]>m[i][j]:
  67.                     mini[k]=m[i][j]
  68.                     minis[i][k]=j
  69.                     pasmin=False
  70.                 k=k+1
  71.     return (minis)
  72.    
  73.    
  74. #crée une matrice d'adjacence a partir des coordonnées des noeuds
  75. def init2 (nb,coos):
  76.     n=len(coos)
  77.     dist=distances (coos)
  78.     res=[[0 for i in range (n)]for j in range (n)]
  79.     indimin= indi_min (dist,nb)
  80.     for i in range (n):
  81.         for j in range (n):
  82.             for k in range (nb):
  83.                 if indimin[i][k]== j:
  84.                     res[i][j]=dist[i][j]
  85.                     res[j][i]=dist[i][j]
  86.     return res
  87.    
  88.  
  89. #affiche le graphe  
  90. def affichage (coos,r,nb):
  91.     wdw=tki.Tk ()
  92.     wdw.title ("test")
  93.     wdw.geometry ("1400x1000")
  94.     wdw.config(background="#8CCCFE") #bleu pale
  95.     wdw.maxsize (1400,1000)
  96.     wdw.minsize (1400,1000)
  97.     boite =tki.Frame (wdw,width=400,height=1000,bg="#8CCCFE")
  98.     canvas=tki.Canvas (wdw,width=1000,height=1000,bg="#D0EAFE") #bleu pale clair
  99.     n=len(coos)
  100.     m=init2 (nb,coos)
  101.     for i in range (n):
  102.         for j in range (1+i,n):
  103.             if m[i][j]>0:
  104.                 x1=coos[i][0]
  105.                 y1=coos[i][1]
  106.                 x2=coos[j][0]
  107.                 y2=coos[j][1]
  108.                 canvas.create_line (x1,y1,x2,y2,width=2)
  109.     for i in range (n):
  110.         x=coos[i][0]
  111.         y=coos[i][1]
  112.         canvas.create_oval (x+r,y+r,x-r,y-r,fill="red")
  113.     #canvas.pack (fill="both",expand=tki.YES)
  114.     canvas.pack (side="left")
  115.     chemins=tki.Label(boite,text= "Générer le trafic",font=("Arial",30),bg="#8CCCFE",fg="white")
  116.     chemins.pack(expand=tki.YES)
  117.     nombr=tki.Entry(boite,font=("Arial",30),fg="#8CCCFE")
  118.     nombr.pack(expand=tki.YES)
  119.     trafftext= "générer"
  120.     traff=tki.Button(boite,text= trafftext,font=("Arial",30),fg="#8CCCFE",command=print(m))
  121.     traff.pack()
  122.     boite.pack (side="right",expand=tki.YES)
  123.     wdw.mainloop ()
  124.    
  125.  
  126. #affiche un graphe àléatoire
  127. def affich_rand (n,r,nb):
  128.     return (affichage (coo (n,r),r,nb))
  129.    
  130.    
  131. #dijkstra c'est pas moi qui l'ai fait, je l'ai trouvé ici: http://www.alcandre.net/uploads/TD-dijkstra.pdf
  132.  
  133. #trouve la première ligne du tableau de l'algorithme de dijkstra
  134. def ligneInit(Graphe,depart) :
  135.     L = []
  136.     n = len(Graphe)
  137.     for j in range(n) :
  138.         poids = Graphe[depart][j]
  139.         if poids :
  140.             L.append([ poids, depart ])
  141.         else :
  142.             L.append(False)
  143.     return [L]
  144.  
  145.  
  146. #determine le prochain sommet que doit traiter dijkstra
  147. def SommetSuivant(T, S_marques) :
  148.     L = T[-1]  
  149.     n = len(L)
  150.     min = False
  151.     for i in range(n) :
  152.         if not(i in S_marques) :
  153.             if L[i]:
  154.                 if not(min) or L[i][0] < min :
  155.                     min = L[i][0]
  156.                     marque = i
  157.     return(marque)
  158.    
  159.    
  160. def ajout_ligne(T,S_marques,Graphe) :
  161.     # Ajoute une ligne supplémentaire au tableau
  162.     L = T[-1]
  163.     n = len(L)
  164.     # La prochaine ligne est une copie de la précédente,
  165.     # dont on va modifier quelques valeurs.
  166.     Lnew = L.copy()
  167.     # sommet dont on va étudier les voisins
  168.     S = S_marques[-1]
  169.     # la longueur du (plus court) chemin associé
  170.     long = L[S][0]
  171.     for j in range(n) :
  172.         if j not in S_marques:
  173.             poids = Graphe[S][j]
  174.             if poids :
  175.             # si l’arète (S,j) est présente
  176.                 if not(L[j]) : # L[j] = False
  177.                     Lnew[j] = [ long + poids, S ]
  178.                 else :
  179.                     if long + poids < L[j][0] :
  180.                         Lnew[j] = [ long + poids, S ]
  181.     T.append(Lnew)
  182.     # Calcul du prochain sommet marqué
  183.     S_marques.append(SommetSuivant(T, S_marques))
  184.     return T, S_marques
  185.  
  186.  
  187. #calcule le tableau de l'algorithme de Dijkstra
  188. def calcule_tableau(Graphe, depart) :
  189.     n = len(Graphe)
  190.     T=[[False] *n]
  191.     T[0][depart] = [depart, 0]
  192.     S_marques = [ depart ]
  193.     while len(S_marques) < n :
  194.         T, S_marques = ajout_ligne(T, S_marques, Graphe)
  195.     return T
  196.  
  197.  
  198. #Calcul du plus court chemin entre 2 noeud
  199. def plus_court_chemin(Graphe, depart, arrivee) :
  200.     n = len(Graphe)
  201.     T = calcule_tableau (Graphe,depart)
  202.     C = [ arrivee ]
  203.     while C[-1] != depart :
  204.         C.append( T[-1][ C[-1] ][1] )
  205.     C.reverse()
  206.     return C
  207.    
  208.    
  209. #assigne au chemin une nouvelle longueur d'onde    
  210. def assigne_lambda (chemin,lambd):
  211.     for i in range (len(chemin)):
  212.         chemin[i][1].append(lambd)
  213.     return chemin
  214.    
  215.    
  216. #fait une liste de k chemin dans un graphe de taille n
  217. def trafic (k,n):
  218.     res=[]
  219.     for i in range (k):
  220.         a=0
  221.         b=0
  222.         while a==b:
  223.             a=r.randint(0,n-1)
  224.             b=r.randint(0,n-1)
  225.        
  226.         res.append([a,b])
  227.     return res
  228.    
  229.  
  230. #découpe un chemin en parcours neud a neud sous forme de liste de couple, example abcd devient ab,bc,cd
  231. def decoupe (chemin):
  232.     res = []
  233.     n=len(chemin)
  234.     for i in range (n-1):
  235.         if chemin[i]<chemin[i+1]:
  236.             res.append([chemin[i],chemin[i+1]])
  237.         else:
  238.             res.append([chemin[i+1],chemin[i]])
  239.            
  240.     return res
  241.    
  242.  
  243. #transforme les liste de liste de liste en liste de liste
  244. def flatten (l):
  245.     res=[]
  246.     n=len (l)
  247.     for i in range (n):
  248.         for j in range (len(l[i])):
  249.             res.append (l[i][j])
  250.     return (res)
  251.    
  252.    
  253. #compte le nombre de longueurs d'onde qui passe dans chaque dans chaques fibres
  254. def compte (l):
  255.     res=[]
  256.     n=len(l)
  257.     for i in range (n):
  258.         dejacompte =False
  259.         for j in range (len(res)):
  260.             if l[i]==res[j][1] and not dejacompte:
  261.                 res[j][0]=res[j][0]+1
  262.                 dejacompte=True
  263.         if not dejacompte:
  264.             res.append([1,l[i]])
  265.     return res
  266.                
  267.    
  268. graphetest= [[0.0, 0, 0, 0, 0, 0, 0, 0, 102.39140588936164, 0, 0, 0, 0, 143.8923208513922, 0, 0, 0, 0, 0, 0],[0, 0.0, 0, 116.06894502837527, 0, 0, 0, 0, 0, 0, 0, 187.09623192357455, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0.0, 0, 110.3177229641729, 0, 0, 0, 0, 0, 0, 0, 0, 207.99278833651903, 0, 0, 0, 0, 0, 0], [0, 116.06894502837527, 0, 0.0, 0, 0, 0, 0, 0, 0, 312.8338217009152, 142.00352108310554, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 110.3177229641729, 0, 0.0, 182.21415971323415, 251.03187048659777, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 182.21415971323415, 0.0, 265.75364531836624, 0, 0, 0, 392.3633520093333, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 251.03187048659777, 265.75364531836624, 0.0, 0, 0, 0, 127.09838708654017, 290.5580836941213, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0.0, 0, 0, 357.4758733117523, 241.51397475094478, 158.90248582070703, 0, 0, 0, 0, 0, 335.5964838909967, 0], [102.39140588936164, 0, 0, 0, 0, 0, 0, 0, 0.0, 0, 0, 0, 0, 125.7179382586272, 0, 0, 139.74262055650738, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0.0, 0, 0, 115.52056094046635, 0, 0, 136.85028315644803, 0, 0, 0, 0], [0, 0, 0, 312.8338217009152, 0, 392.3633520093333, 127.09838708654017, 357.4758733117523, 0, 0, 0.0, 182.47739586041882, 0, 0, 0, 0, 0, 0, 0, 0], [0, 187.09623192357455, 0, 142.00352108310554, 0, 0, 290.5580836941213, 241.51397475094478, 0, 0, 182.47739586041882, 0.0, 395.08100435227203, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 158.90248582070703, 0, 115.52056094046635, 0, 395.08100435227203, 0.0, 0, 0, 0, 0, 270.2480342204176, 0, 134.6291201783626], [143.8923208513922, 0, 207.99278833651903, 0, 0, 0, 0, 0, 125.7179382586272, 0, 0, 0, 0, 0.0, 148.92951352905172, 0, 0, 0, 161.40012391568973, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 148.92951352905172, 0.0, 0, 157.20368952413298, 240.6595105122588, 135.83077707206124, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 136.85028315644803, 0, 0, 0, 0, 0, 0.0, 0, 0, 288.36088500349695, 139.84276885130672], [0, 0, 0, 0, 0, 0, 0, 0, 139.74262055650738, 0, 0, 0, 0, 0, 157.20368952413298, 0, 0.0, 0, 286.9233347080715, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 270.2480342204176, 0, 240.6595105122588, 0, 0, 0.0, 211.6341182323871, 283.0282671395209], [0, 0, 0, 0, 0, 0, 0, 335.5964838909967, 0, 0, 0, 0, 0, 161.40012391568973, 135.83077707206124, 288.36088500349695, 286.9233347080715, 211.6341182323871, 0.0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 134.6291201783626, 0, 0, 139.84276885130672, 0, 283.0282671395209, 0, 0.0]]
  269.  
  270.  
  271. traftest =[[19, 12], [2, 4], [9, 2], [10, 8], [15, 2], [11, 0], [1, 2], [11, 2], [10, 17], [7, 5], [19, 12], [13, 8], [0, 7], [11, 12], [7, 10], [10, 11], [11, 10], [11, 9], [15, 8], [9, 1], [4, 14], [9, 12], [3, 17], [11, 7], [9, 13], [15, 13], [7, 16], [18, 19], [5, 18], [5, 11], [17, 18], [14, 4], [19, 19], [10, 15], [9, 10], [17, 3], [11, 19], [18, 9], [5, 12], [4, 13], [18, 4], [6, 15], [15, 5], [17, 14], [5, 14], [0, 9], [14, 0], [11, 17], [18, 8], [19, 11], [7, 10], [18, 5], [0, 15], [9, 5], [5, 16], [2, 8], [1, 10], [4, 7], [16, 6], [5, 13]]
  272.  
  273.  
  274. #applique la methode de Barony Bayvel
  275. def BaronyBayvel (graphe,limite,traf):
  276.     n=len (traf)
  277.     chemins=[]
  278.     g=copy.deepcopy (graphe)
  279.     for k in range (n):
  280.         chemins.append (decoupe(plus_court_chemin(g,traf[k][0],traf[k][1])))
  281.         densite=compte(flatten(chemins))
  282.         for i in range (len(densite)):
  283.             if densite[i][0]>=limite:
  284.                 g[densite[i][1][0]][densite[i][1][1]]=0
  285.                 g[densite[i][1][1]][densite[i][1][0]]=0
  286.     return chemins
  287.    
  288.    
  289.    
  290. graphetest2=[[0.0, 0, 0, 0, 0, 0, 0, 0, 102.39140588936164, 0, 0, 0, 0, 143.8923208513922, 0, 0, 0, 0, 0, 0], [0, 0.0, 0, 116.06894502837527, 0, 0, 0, 0, 0, 0, 0, 187.09623192357455, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 116.06894502837527, 0, 0.0, 0, 0, 0, 0, 0, 0, 312.8338217009152, 142.00352108310554, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0.0, 182.21415971323415, 251.03187048659777, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 182.21415971323415, 0.0, 265.75364531836624, 0, 0, 0, 392.3633520093333, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 251.03187048659777, 265.75364531836624, 0.0, 0, 0, 0, 127.09838708654017, 290.5580836941213, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0.0, 0, 0, 357.4758733117523, 241.51397475094478, 158.90248582070703, 0, 0, 0, 0, 0, 335.5964838909967, 0], [102.39140588936164, 0, 0, 0, 0, 0, 0, 0, 0.0, 0, 0, 0, 0, 125.7179382586272, 0, 0, 139.74262055650738, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0.0, 0, 0, 115.52056094046635, 0, 0, 136.85028315644803, 0, 0, 0, 0], [0, 0, 0, 312.8338217009152, 0, 392.3633520093333, 127.09838708654017, 357.4758733117523, 0, 0, 0.0, 182.47739586041882, 0, 0, 0, 0, 0, 0, 0, 0], [0, 187.09623192357455, 0, 142.00352108310554, 0, 0, 290.5580836941213, 241.51397475094478, 0, 0, 182.47739586041882, 0.0, 395.08100435227203, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 158.90248582070703, 0, 115.52056094046635, 0, 395.08100435227203, 0.0, 0, 0, 0, 0, 270.2480342204176, 0, 134.6291201783626], [143.8923208513922, 0, 0, 0, 0, 0, 0, 0, 125.7179382586272, 0, 0, 0, 0, 0.0, 148.92951352905172, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 148.92951352905172, 0.0, 0, 157.20368952413298, 240.6595105122588, 135.83077707206124, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 136.85028315644803, 0, 0, 0, 0, 0, 0.0, 0, 0, 288.36088500349695, 139.84276885130672], [0, 0, 0, 0, 0, 0, 0, 0, 139.74262055650738, 0, 0, 0, 0, 0, 157.20368952413298, 0, 0.0, 0, 286.9233347080715, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 270.2480342204176, 0, 240.6595105122588, 0, 0, 0.0, 211.6341182323871, 283.0282671395209], [0, 0, 0, 0, 0, 0, 0, 335.5964838909967, 0, 0, 0, 0, 0, 0, 135.83077707206124, 288.36088500349695, 286.9233347080715, 211.6341182323871, 0.0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 134.6291201783626, 0, 0, 139.84276885130672, 0, 283.0282671395209, 0, 0.0]]    
  291.    
  292.  
  293.  
  294. resultat= [[[12, 19]], [[2, 4]], [[9, 15], [15, 18], [13, 18], [2, 13]], [[6, 10], [4, 6], [2, 4], [2, 13], [8, 13]], [[15, 18], [13, 18], [2, 13]], [[7, 11], [7, 18], [13, 18], [0, 13]], [[1, 11], [6, 11], [4, 6], [2, 4]], [[6, 11], [4, 6], [2, 4]], [[7, 10], [7, 12], [12, 17]], [[7, 10], [5, 10]], [[12, 19]], [[8, 13]], [[0, 13], [13, 18], [7, 18]], [[11, 12]], [[7, 10]], [[10, 11]], [[10, 11]], [[11, 12], [9, 12]], [[15, 18], [13, 18], [8, 13]], [[9, 12], [11, 12], [1, 11]], [[2, 4], [2, 13], [13, 14]], [[9, 12]], [[3, 11], [11, 12], [12, 17]], [[7, 11]], [[9, 15], [15, 18], [13, 18]], [[15, 18], [13, 18]], [[7, 18], [16, 18]], [[15, 18], [15, 19]], [[4, 5], [2, 4], [2, 13], [13, 18]], [[5, 6], [6, 11]], [[17, 18]], [[13, 14], [2, 13], [2, 4]], [], [[7, 10], [7, 12], [9, 12], [9, 15]], [[9, 12], [7, 12], [7, 10]], [[12, 17], [11, 12], [3, 11]], [[11, 12], [12, 19]], [[15, 18], [9, 15]], [[5, 10], [7, 10], [7, 12]], [[2, 4], [2, 13]], [[13, 18], [2, 13], [2, 4]], [[6, 10], [7, 10], [7, 12], [9, 12], [9, 15]], [[15, 18], [13, 18], [2, 13], [2, 4], [4, 5]], [[14, 17]], [[4, 5], [2, 4], [2, 13], [13, 14]], [[0, 13], [13, 18], [15, 18], [9, 15]], [[13, 14], [0, 13]], [[11, 12], [12, 17]], [[13, 18], [8, 13]], [[12, 19], [11, 12]], [[7, 10]], [[13, 18], [2, 13], [2, 4], [4, 5]], [[0, 13], [13, 18], [15, 18]], [[9, 12], [7, 12], [7, 10], [5, 10]], [[4, 5], [2, 4], [2, 13], [8, 13], [8, 16]], [[2, 13], [8, 13]], [[1, 11], [10, 11]], [[4, 6], [6, 10], [7, 10]], [[8, 16], [8, 13], [2, 13], [2, 4], [4, 6]], [[4, 5], [2, 4], [2, 13]]]
  295.  
  296.  
  297.  
  298.  
  299.  
  300.  
  301.  
  302. #initialise l'assignement de longeur d'onde
  303. def InitAssigneLO (l):
  304.     l=flatten(l)
  305.     res=[]
  306.     n=len(l)
  307.     for i in range (n):
  308.         dejacompte =False
  309.         for j in range (len(res)):
  310.             if l[i]==res[j][1] and not dejacompte:
  311.                 dejacompte=True
  312.         if not dejacompte:
  313.             res.append([[],l[i]])
  314.     return res
  315.  
  316.  
  317. #verifie si un élément est dans une liste
  318. def estdedans (l,e):
  319.     n=len (l)
  320.     bool=False
  321.     for i in range (n):
  322.         if l[i]==e:
  323.             bool=True
  324.     return bool
  325.  
  326.  
  327. #trouve la position d'un élement dans une liste
  328. def indice (l,e):
  329.     for k in range (len (l)):
  330.         if l[k]==e:
  331.             return k
  332.            
  333.  
  334. #fonction qui simplifi une liste pour facilité l'assignement de longueurs d'onde
  335. def simplifi (l,i):
  336.     res=[]
  337.     for k in range (len(l)):
  338.         res.append(l[k][i])
  339.     return res
  340.        
  341.  
  342. #algorithme d'assignement de longueurs d'ondes
  343. def AssigneLO (l):
  344.     res=[]
  345.     dejaassigne=InitAssigneLO (l)
  346.     indices=simplifi (dejaassigne,1)
  347.     n=len (l)
  348.     for i in range (n):
  349.         m=len(l[i])
  350.         lambd=0
  351.         k=0
  352.         while k<m:
  353.             if estdedans(dejaassigne[indice(indices,l[i][k])][0],lambd):
  354.                 lambd=lambd+1
  355.                 k=0
  356.             else :
  357.                 k=k+1
  358.         for j in range (m):
  359.             dejaassigne[indice(indices,l[i][j])][0].append(lambd)
  360.         res.append([lambd,l[i]])
  361.     return res
  362.        
  363.                
  364.  
  365. #nombres de longueurs d'onde utilisées
  366. def nombreLO (l):
  367.     aux=[]
  368.     n=len(l)
  369.     for i in range (n):
  370.         if not estdedans (aux,l[i]):
  371.             aux.append(l[i])
  372.     res=len(aux)
  373.     return (res)
  374.  
  375.  
  376.  
  377.  
  378.  
  379.  
  380. graphetipe=[[0.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 135.79396157414365, 0, 0, 0, 0, 0, 0, 0, 0, 0, 154.20765220960988, 0, 0, 0, 0, 0, 0], [0, 0.0, 0, 0, 134.3726162579266, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 141.98943622678414, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 152.27934856703322, 0, 0, 0, 0, 0, 0, 0, 0, 0, 185.64751546950473, 0, 0, 0, 0], [0, 0, 0, 0.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 218.00917411888886, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 129.9576854210631], [0, 134.3726162579266, 0, 0, 0.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 201.1889659002203, 0, 0, 0, 0, 0, 0, 146.102703602637, 0], [0, 0, 0, 0, 0, 0.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 130.36103712382777, 0, 141.12760183606892, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0.0, 0, 0, 0, 0, 121.8031198286809, 0, 0, 0, 0, 0, 0, 186.59314028120113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0.0, 0, 0, 0, 147.00340132119393, 0, 0, 0, 0, 0, 121.10326172320876, 0, 0, 0, 0, 0, 0, 0, 146.23952953972466, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0.0, 0, 0, 0, 0, 0, 0, 148.32734070291963, 0, 0, 0, 0, 168.4339633209407, 0, 0, 0, 0, 263.5773131360133, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 151.38031576133008, 0, 162.8158468945821, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140.80127840328723, 223.0807028857494, 0], [0, 0, 0, 0, 0, 0, 121.8031198286809, 147.00340132119393, 0, 0, 0, 0.0, 0, 0, 0, 0, 0, 0, 0, 167.7647161950331, 0, 0, 0, 0, 0, 221.0701246211256, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.0, 0, 0, 0, 0, 244.78970566590417, 0, 140.1606221447379, 0, 0, 0, 0, 0, 0, 187.13097017864254, 0, 0, 0], [135.79396157414365, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.0, 0, 0, 0, 125.80143083447024, 0, 0, 0, 0, 0, 193.8762491900439, 0, 0, 314.6966793596653, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.0, 0, 0, 123.0690862889621, 0, 0, 0, 0, 0, 172.18594600024707, 0, 0, 0, 0, 0, 0], [0, 0, 152.27934856703322, 0, 0, 0, 0, 0, 148.32734070291963, 0, 0, 0, 0, 0, 0, 0.0, 0, 0, 0, 0, 138.03260484392808, 0, 0, 0, 0, 305.00491799313664, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 133.3641631023867, 0, 241.3503677229434], [0, 0, 0, 0, 0, 0, 0, 121.10326172320876, 0, 0, 0, 0, 244.78970566590417, 125.80143083447024, 123.0690862889621, 0, 0, 0.0, 0, 0, 0, 0, 0, 269.462427807663, 0, 0, 0, 0, 0, 0], [0, 0, 0, 218.00917411888886, 0, 0, 186.59314028120113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.0, 181.4717608885746, 0, 0, 0, 0, 219.65882636488797, 0, 0, 196.4001018329675, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 167.7647161950331, 140.1606221447379, 0, 0, 0, 0, 0, 181.4717608885746, 0.0, 0, 0, 0, 0, 0, 0, 0, 0, 278.4690287985362, 0], [0, 0, 0, 0, 0, 0, 0, 0, 168.4339633209407, 0, 0, 0, 0, 0, 0, 138.03260484392808, 0, 0, 0, 0, 0.0, 0, 171.71196813268432, 0, 288.1700886629284, 0, 0, 0, 0, 0], [0, 141.98943622678414, 0, 0, 201.1889659002203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.0, 0, 0, 0, 0, 0, 0, 317.9701243827791, 0], [0, 0, 0, 0, 0, 130.36103712382777, 0, 0, 0, 151.38031576133008, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 171.71196813268432, 0, 0.0, 0, 131.24404748406687, 0, 0, 0, 0, 0], [154.20765220960988, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 193.8762491900439, 172.18594600024707, 0, 0, 269.462427807663, 0, 0, 0, 0, 0, 0.0, 0, 0, 143.42245291445826, 0, 0, 0], [0, 0, 0, 0, 0, 141.12760183606892, 0, 0, 0, 162.8158468945821, 0, 0, 0, 0, 0, 0, 0, 0, 219.65882636488797, 0, 288.1700886629284, 0, 131.24404748406687, 0, 0.0, 0, 0, 0, 0, 143.8923208513922], [0, 0, 185.64751546950473, 0, 0, 0, 0, 146.23952953972466, 263.5773131360133, 0, 0, 221.0701246211256, 0, 0, 0, 305.00491799313664, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 187.13097017864254, 314.6966793596653, 0, 0, 0, 0, 0, 0, 0, 0, 0, 143.42245291445826, 0, 0, 0.0, 0, 153.3101431738944, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140.80127840328723, 0, 0, 0, 0, 0, 133.3641631023867, 0, 196.4001018329675, 0, 0, 0, 0, 0, 0, 0, 0, 0.0, 0, 0], [0, 0, 0, 0, 146.102703602637, 0, 0, 0, 0, 0, 223.0807028857494, 0, 0, 0, 0, 0, 0, 0, 0, 278.4690287985362, 0, 317.9701243827791, 0, 0, 0, 0, 153.3101431738944, 0, 0.0, 0], [0, 0, 0, 129.9576854210631, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 241.3503677229434, 0, 0, 0, 0, 0, 0, 0, 143.8923208513922, 0, 0, 0, 0, 0.0]]
  381.  
  382. trafictipe=[[12, 6], [19, 22], [18, 9], [16, 2], [4, 27], [13, 5], [19, 8], [10, 28], [13, 17], [25, 4], [26, 28], [16, 11], [13, 23], [27, 8], [6, 7], [13, 22], [17, 23], [23, 25], [3, 19], [19, 16], [18, 4], [10, 11], [11, 19], [5, 18], [22, 13], [18, 22], [16, 24], [0, 16], [10, 21], [14, 6], [28, 1], [19, 12], [13, 14], [17, 12], [20, 3], [27, 22], [24, 27], [13, 26], [0, 5], [25, 14], [13, 26], [7, 10], [9, 27], [22, 21], [29, 27], [2, 7], [6, 7], [28, 4], [28, 5], [13, 4], [9, 18], [25, 5], [17, 9], [1, 13], [3, 17], [27, 25], [6, 23], [19, 20], [19, 25], [1, 11], [3, 0], [17, 20], [21, 11], [2, 7], [26, 18], [25, 12], [14, 11], [1, 13], [22, 11], [0, 10], [3, 7], [18, 15], [22, 7], [15, 26], [16, 25], [17, 29], [21, 16], [12, 17], [8, 11], [26, 17], [1, 29], [9, 12], [18, 0], [4, 15], [21, 10], [21, 2], [2, 23], [2, 13], [0, 24], [21, 13], [5, 17], [16, 6], [6, 7], [3, 23], [18, 21], [19, 4], [5, 9], [4, 24], [16, 11], [10, 19]]
  383.  
  384.  
  385.  
  386. resultattipe=[[[12, 19], [11, 19], [6, 11]], [[18, 19], [18, 24], [22, 24]], [[18, 24], [9, 24]], [[16, 29], [24, 29], [20, 24], [15, 20], [2, 15]], [[4, 28], [10, 28], [10, 27]], [[13, 17], [12, 17], [12, 19], [18, 19], [18, 24], [5, 24]], [[11, 19], [11, 25], [8, 25]], [[10, 28]], [[13, 17]], [[11, 25], [11, 19], [19, 28], [4, 28]], [[26, 28]], [[16, 27], [18, 27], [6, 18], [6, 11]], [[13, 23]], [[18, 27], [18, 24], [20, 24], [8, 20]], [[6, 11], [7, 11]], [[13, 17], [7, 17], [7, 25], [8, 25], [8, 20], [20, 22]], [[17, 23]], [[17, 23], [7, 17], [7, 25]], [[3, 18], [18, 19]], [[18, 19], [18, 27], [16, 27]], [[18, 19], [19, 28], [4, 28]], [[10, 27], [18, 27], [6, 18], [6, 11]], [[11, 19]], [[5, 24], [18, 24]], [[20, 22], [8, 20], [8, 25], [7, 25], [7, 17], [13, 17]], [[18, 24], [22, 24]], [[16, 29], [24, 29]], [[0, 23], [23, 26], [26, 28], [10, 28], [10, 27], [16, 27]], [[10, 28], [21, 28]], [[14, 17], [7, 17], [7, 11], [6, 11]], [[4, 28], [1, 4]], [[12, 19]], [[13, 17], [14, 17]], [[12, 17]], [[20, 24], [24, 29], [3, 29]], [[18, 27], [18, 24], [22, 24]], [[18, 24], [18, 27]], [[13, 26]], [[0, 23], [23, 26], [12, 26], [12, 19], [18, 19], [18, 24], [5, 24]], [[7, 25], [7, 17], [14, 17]], [[13, 26]], [[7, 11], [6, 11], [6, 18], [18, 27], [10, 27]], [[9, 24], [18, 24], [18, 27]], [[22, 24], [18, 24], [18, 19], [19, 28], [21, 28]], [[16, 29], [16, 27]], [[2, 25], [7, 25]], [[6, 11], [7, 11]], [[4, 28]], [[19, 28], [18, 19], [18, 24], [5, 24]], [[13, 26], [26, 28], [4, 28]], [[9, 24], [18, 24]], [[8, 25], [8, 20], [20, 22], [5, 22]], [[12, 17], [12, 19], [18, 19], [18, 24], [9, 24]], [[1, 4], [4, 28], [26, 28], [13, 26]], [[3, 18], [18, 19], [12, 19], [12, 17]], [[18, 27], [6, 18], [6, 11], [11, 25]], [[6, 11], [7, 11], [7, 17], [17, 23]], [[11, 19], [11, 25], [8, 25], [8, 20]], [[11, 19], [11, 25]], [[1, 4], [4, 28], [19, 28], [11, 19]], [[3, 18], [18, 19], [12, 19], [12, 26], [23, 26], [0, 23]], [[7, 17], [7, 25], [8, 25], [8, 20]], [[21, 28], [19, 28], [11, 19]], [[2, 25], [7, 25]], [[12, 26], [12, 19], [18, 19]], [[7, 25], [7, 17], [12, 17]], [[14, 17], [7, 17], [7, 11]], [[1, 4], [4, 28], [26, 28], [13, 26]], [[20, 22], [8, 20], [8, 25], [11, 25]], [[0, 23], [23, 26], [26, 28], [10, 28]], [[3, 18], [6, 18], [6, 11], [7, 11]], [[6, 18], [6, 11], [11, 25], [15, 25]], [[20, 22], [8, 20], [8, 25], [7, 25]], [[15, 25], [7, 25], [7, 17], [17, 23], [23, 26]], [[16, 27], [18, 27], [6, 18], [6, 11], [11, 25]], [[12, 17], [12, 19], [18, 19], [3, 18], [3, 29]], [[21, 28], [10, 28], [10, 27], [16, 27]], [[12, 17]], [[8, 25], [11, 25]], [[23, 26], [17, 23]], [[1, 4], [4, 28], [10, 28], [10, 27], [16, 27], [16, 29]], [[9, 24], [24, 29], [3, 29], [3, 18], [18, 19], [12, 19]], [[6, 18], [6, 11], [7, 11], [7, 17], [13, 17], [0, 13]], [[4, 28], [19, 28], [11, 19], [11, 25], [15, 25]], [[21, 28], [10, 28]], [[21, 28], [19, 28], [11, 19], [11, 25], [2, 25]], [[2, 25], [7, 25], [7, 17], [17, 23]], [[2, 25], [7, 25], [7, 17], [13, 17]], [[0, 13], [13, 17], [7, 17], [7, 25], [8, 25], [8, 20], [20, 24]], [[21, 28], [26, 28], [13, 26]], [[5, 24], [24, 29], [3, 29], [3, 18], [6, 18], [6, 11], [11, 19], [12, 19], [12, 17]], [[16, 27], [18, 27], [6, 18]], [[6, 18], [18, 27], [10, 27], [10, 28], [19, 28], [11, 19], [7, 11]], [[3, 18], [18, 27], [10, 27], [10, 28], [26, 28], [23, 26]], [[18, 27], [10, 27], [10, 28], [21, 28]], [[19, 28], [4, 28]], [[5, 22], [9, 22]], [[4, 28], [10, 28], [10, 27], [16, 27], [16, 29], [24, 29]], [[16, 27], [10, 27], [10, 28], [19, 28], [11, 19]], [[10, 28], [19, 28]]]
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Not a member of Pastebin yet?
Sign Up, it unlocks many cool features!
 
Top