Skip to content

Instantly share code, notes, and snippets.

@LucasAlfare
Created March 11, 2016 00:55
Show Gist options
  • Save LucasAlfare/8ef90f8f1f96621870b8 to your computer and use it in GitHub Desktop.
Save LucasAlfare/8ef90f8f1f96621870b8 to your computer and use it in GitHub Desktop.
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())
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment