Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import random as r
- class Peca(object):
- pass
- class Edge(Peca):
- def __init__(self, name):
- self.name = name
- def getPieceName(self):
- return self.name
- def __str__(self):
- return self.name
- class Corner(Peca):
- def __init__(self, name):
- self.name = name
- def getPieceName(self):
- return self.name
- def __str__(self):
- return self.name
- class SquareOne(object):
- a = Edge('a')
- b = Corner('b')
- c = Edge('c')
- d = Corner('d')
- e = Edge('e')
- f = Corner('f')
- g = Edge('g')
- h = Corner('h')
- #
- i = Edge('i')
- j = Corner('j')
- k = Edge('k')
- l = Corner('l')
- m = Edge('m')
- n = Corner('n')
- o = Edge('o')
- p = Corner('p')
- posicoes = [
- # Peças da camada U
- a, b, b, c, d, d, e, f, f, g, h, h,
- # Peças da camada D
- i, j, j, k, l, l, m, n, n, o, p, p]
- def U(self, movimento):
- TOOOOOOP_pieces = self.posicoes[0:12]
- ll = len(TOOOOOOP_pieces)
- if movimento > 0:
- for i in range(movimento):
- aux = [TOOOOOOP_pieces[ll - 1]]
- for j in range(ll):
- aux.append(TOOOOOOP_pieces[j])
- if j is (ll - 1):
- break
- TOOOOOOP_pieces = aux
- elif movimento < 0:
- for i in range(movimento * (-1)):
- deleted = TOOOOOOP_pieces[0]
- TOOOOOOP_pieces.remove(deleted)
- TOOOOOOP_pieces.append(deleted)
- ultimos = self.posicoes[12:len(self.posicoes)]
- self.posicoes[0:12] = TOOOOOOP_pieces
- self.posicoes[12:24] = ultimos
- def D(self, movimento):
- botton_pieces = self.posicoes[12:24]
- ll = len(botton_pieces)
- if movimento > 0:
- for i in range(movimento):
- aux = [botton_pieces[ll - 1]]
- for j in range(ll):
- aux.append(botton_pieces[j])
- if j is (ll - 1):
- break
- botton_pieces = aux
- elif movimento < 0:
- for i in range(movimento * (-1)):
- deleted = botton_pieces[0]
- botton_pieces.remove(deleted)
- botton_pieces.append(deleted)
- primeiros = self.posicoes[0:12]
- self.posicoes[0:12] = primeiros
- self.posicoes[12:24] = botton_pieces
- def barra(self):
- corte_de_U = self.posicoes[1:7]
- corte_de_D = self.posicoes[12:18]
- for i in range(6):
- aux = corte_de_U[i]
- aux2 = corte_de_D[i]
- corte_de_U[i] = aux2
- corte_de_D[i] = aux
- self.posicoes[1:7] = corte_de_U
- self.posicoes[12:18] = corte_de_D
- def isTravado(self):
- aux = self.posicoes
- if aux[0] is aux[1] or aux[6] is aux[7] or aux[17] is aux[18] or aux[23] is aux[12]:
- return True
- return False
- def __str__(self):
- toPrint = ''
- for i in range(self.posicoes.__len__()):
- toPrint += self.posicoes[i].__str__() + " "
- if i is 11:
- toPrint += "\n\n"
- return toPrint
- class Embaralhador(object):
- moves = [-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6]
- sq1 = SquareOne()
- sorteadosOk = []
- def embaralhar(self):
- u = r.choice(self.moves)
- d = r.choice(self.moves)
- self.sq1.U(u)
- self.sq1.D(d)
- if self.sq1.isTravado():
- self.sq1.U(u*-1)
- self.sq1.D(d*-1)
- self.embaralhar()
- else:
- self.sq1.barra()
- self.sorteadosOk.append([u, d])
- def scramble(self):
- for i in range(5):
- self.embaralhar()
- s = ''
- oks = self.sorteadosOk
- for i in range(len(oks)):
- s += '(' + str(oks[i][0]) + ',' + str(oks[i][1]) + ')/'
- return s
- print(Embaralhador().scramble())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement