Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class GrafoTablero3x3:
- def init(self):
- self.grafo = dict()
- self.alturaYAncho = (3, 3)
- def getitem(self, vertice):
- if self.verificarGrafo(vertice):
- indiceVacio = vertice.index(0)
- if vertice not in self.grafo.keys():
- vertices = dict()
- for elemento in [("arriba",(-1,0)), ("abajo",(1,0)), ("deracha",(0,1)), ("izquierda",(0,-1))]:
- if self.incrementarIndiceValido(elemento[1], indiceVacio, self.alturaYAncho):
- vertices[elemento[0]] = self.copyYSwap(vertice, indiceVacio, self.incrementarIndice(elemento[1], indiceVacio, self.alturaYAncho))
- self.grafo[vertice] = vertices
- return self.grafo[vertice]
- else:
- return "grafo no valido"
- def verificarGrafo(self, vertice):
- return self.alturaYAncho[0] * self.alturaYAncho[1] == len(list(vertice))
- def copyYSwap(self, tupla, indiceCambio1, indiceCambio2):
- copiaTupla = list(tupla).copy()
- copiaTupla[indiceCambio1], copiaTupla[indiceCambio2] = copiaTupla[indiceCambio2], copiaTupla[indiceCambio1]
- return tuple(copiaTupla)
- def incrementarIndice(self, incremento, indice, rangos):
- cordenada = (indice // rangos[0], indice % rangos[1])
- cordenada = self.sumatuplas(cordenada, incremento)
- return cordenada[0] * rangos[0] + cordenada[1]
- def incrementarIndiceValido(self, incremento, indice, rangos):
- cordenada = (indice // rangos[0], indice % rangos[1])
- cordenada = self.sumatuplas(cordenada,incremento)
- return cordenada[0] < rangos[0] and cordenada[0] > -1 and cordenada[1] < rangos[1] and cordenada[1] > -1
- def sumatuplas(self, tupla1, tupla2):
- return tuple([a + b for a, b in zip(tupla1, tupla2)])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement