Advertisement
Guest User

Ejercicio de juli

a guest
Apr 8th, 2020
218
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.82 KB | None | 0 0
  1. class GrafoTablero3x3:
  2.  
  3.     def init(self):
  4.         self.grafo = dict()
  5.         self.alturaYAncho = (3, 3)
  6.  
  7.     def getitem(self, vertice):
  8.         if self.verificarGrafo(vertice):
  9.             indiceVacio = vertice.index(0)
  10.             if vertice not in self.grafo.keys():
  11.                 vertices = dict()
  12.                 for elemento in [("arriba",(-1,0)), ("abajo",(1,0)), ("deracha",(0,1)), ("izquierda",(0,-1))]:
  13.                     if self.incrementarIndiceValido(elemento[1], indiceVacio, self.alturaYAncho):
  14.                         vertices[elemento[0]] = self.copyYSwap(vertice, indiceVacio, self.incrementarIndice(elemento[1], indiceVacio, self.alturaYAncho))
  15.                 self.grafo[vertice] = vertices
  16.             return self.grafo[vertice]
  17.         else:
  18.             return "grafo no valido"
  19.  
  20.     def verificarGrafo(self, vertice):
  21.         return self.alturaYAncho[0] * self.alturaYAncho[1] == len(list(vertice))
  22.  
  23.     def copyYSwap(self, tupla, indiceCambio1, indiceCambio2):
  24.         copiaTupla = list(tupla).copy()
  25.         copiaTupla[indiceCambio1], copiaTupla[indiceCambio2] = copiaTupla[indiceCambio2], copiaTupla[indiceCambio1]
  26.         return tuple(copiaTupla)
  27.  
  28.     def incrementarIndice(self, incremento, indice, rangos):
  29.         cordenada = (indice // rangos[0], indice % rangos[1])
  30.         cordenada = self.sumatuplas(cordenada, incremento)
  31.         return cordenada[0] * rangos[0] + cordenada[1]
  32.  
  33.     def incrementarIndiceValido(self, incremento, indice, rangos):
  34.         cordenada = (indice // rangos[0], indice % rangos[1])
  35.         cordenada = self.sumatuplas(cordenada,incremento)
  36.         return cordenada[0] < rangos[0] and cordenada[0] > -1 and cordenada[1] < rangos[1] and cordenada[1] > -1
  37.  
  38.     def sumatuplas(self, tupla1, tupla2):
  39.         return tuple([a + b for a, b in zip(tupla1, tupla2)])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement