VAL = 1.5
cols = "ybrgow"
faces = "ulfrbd"
pos = {
"f0": (1.5, -1, 1),
"f1": (1.5, 0, 1),
"f2": (1.5, 1, 1),
"f3": (1.5, -1, 0),
"f4": (1.5, 0, 0),
"f5": (1.5, 1, 0),
"f6": (1.5, -1, -1),
"f7": (1.5, 0, -1),
"f8": (1.5, 1, -1),
"b8": (-1.5, -1, -1),
"b7": (-1.5, 0, -1),
"b6": (-1.5, 1, -1),
"b5": (-1.5, -1, 0),
"b4": (-1.5, 0, 0),
"b3": (-1.5, 1, 0),
"b2": (-1.5, -1, 1),
"b1": (-1.5, 0, 1),
"b0": (-1.5, 1, 1),
"r0": (1, 1.5, 1),
"r1": (0, 1.5, 1),
"r2": (-1, 1.5, 1),
"r3": (1, 1.5, 0),
"r4": (0, 1.5, 0),
"r5": (-1, 1.5, 0),
"r6": (1, 1.5, -1),
"r7": (0, 1.5, -1),
"r8": (-1, 1.5, -1),
"l0": (-1, -1.5, 1),
"l1": (0, -1.5, 1),
"l2": (1, -1.5, 1),
"l3": (-1, -1.5, 0),
"l4": (0, -1.5, 0),
"l5": (1, -1.5, 0),
"l6": (-1, -1.5, -1),
"l7": (0, -1.5, -1),
"l8": (1, -1.5, -1),
"d0": (1, -1, -1.5),
"d1": (1, 0, -1.5),
"d2": (1, 1, -1.5),
"d3": (0, -1, -1.5),
"d4": (0, 0, -1.5),
"d5": (0, 1, -1.5),
"d6": (-1, -1, -1.5),
"d7": (-1, 0, -1.5),
"d8": (-1, 1, -1.5),
"u0": (-1, -1, 1.5),
"u1": (-1, 0, 1.5),
"u2": (-1, 1, 1.5),
"u3": (0, -1, 1.5),
"u4": (0, 0, 1.5),
"u5": (0, 1, 1.5),
"u6": (1, -1, 1.5),
"u7": (1, 0, 1.5),
"u8": (1, 1, 1.5),
}
planes = {
"f": lambda x: x[0],
"r": lambda x: x[1],
"u": lambda x: x[2]
}
inv_pos = {v: k for k, v in pos.items()}
dct = {}
r_x = lambda x, cc=1: (x[0], cc * x[2], -cc * x[1])
r_y = lambda x, cc=1: (-cc * x[2], x[1], cc * x[0])
r_z = lambda x, cc=1: (cc * x[1], -cc * x[0], x[2])
rs = (r_x, r_y, r_z)
ds = (("f", "b", "Z", "S", 1), ("r", "l", "X", "M", -1), ("u", "d", "Y", "E", 1))
for i in range(3):
a, b, c, d, sgn = ds[i]
rot = rs[i]
A, B, ap, bp, cp, dp, Ap, Bp = a.upper(), b.upper(), a + "'", b + "'", c + "'", d + "'", a.upper() + "'", b.upper() + "'"
p = planes[a]
for x in (a, b, A, B, ap, bp, cp, d, dp, Ap, Bp, c):
dct[x] = {}
for k, v in pos.items():
vc, vcc = rot(v, 1), rot(v, -1)
inv_c, inv_cc = inv_pos[vc], inv_pos[vcc],
dct[c][k] = inv_c
dct[cp][k] = inv_cc
if p(vc) > 0:
dct[A][k] = inv_c
dct[a][k] = inv_c
dct[Ap][k] = inv_cc
dct[ap][k] = inv_cc
elif p(vc) < 0:
dct[b][k] = inv_cc
dct[bp][k] = inv_c
dct[B][k] = inv_cc
dct[Bp][k] = inv_c
elif p(vc) == 0:
dct[a][k] = inv_c
dct[ap][k] = inv_cc
dct[b][k] = inv_cc
dct[bp][k] = inv_c
dct[d][k] = inv_c if a == "f" else inv_cc
dct[dp][k] = inv_cc if a == "f" else inv_c
print(dct)
def show(state):
indent = ' ' * 6
U = state[:9] #self.get_side('U')
up = indent + '+-----+' + '\n' + indent + '|' + ' '.join(U[:3]) + '|\n' + indent + '|' + ' '.join(
U[3:6]) + '|\n' + indent + '|' + ' '.join(U[6:]) + '|\n'
D = state[-9:] #self.get_side('D')
down = indent + '|' + ' '.join(D[:3]) + '|\n' + indent + '|' + ' '.join(
D[3:6]) + '|\n' + indent + '|' + ' '.join(D[6:]) + '|\n' + indent + '+-----+' + '\n'
middle = [list(state[9:18]), list(state[18:27]), list(state[27:36]), list(state[36:45])] #[self.get_side(x) for x in ['L', 'F', 'R', 'B']]
upper_middle = '|' + ''.join([' '.join(side[:3]) + '|' for side in middle])
middle_middle = '|' + ''.join([' '.join(side[3:6]) + '|' for side in middle])
lower_middle = '|' + ''.join([' '.join(side[6:]) + '|' for side in middle])
output = up + '+-----' * 4 + '+\n' + upper_middle + '\n' + middle_middle + '\n' + lower_middle + '\n' + '+-----' * 4 + '+\n' + down
return output
def repr(hsh):
state = "".join("".join(hsh[k] for k in (f"{f}{i}" for i in range(9))) for f in faces)
indent = ' ' * 6
U = state[:9] #self.get_side('U')
up = indent + '+-----+' + '\n' + indent + '|' + ' '.join(U[:3]) + '|\n' + indent + '|' + ' '.join(
U[3:6]) + '|\n' + indent + '|' + ' '.join(U[6:]) + '|\n'
D = state[-9:] #self.get_side('D')
down = indent + '|' + ' '.join(D[:3]) + '|\n' + indent + '|' + ' '.join(
D[3:6]) + '|\n' + indent + '|' + ' '.join(D[6:]) + '|\n' + indent + '+-----+' + '\n'
middle = [list(state[9:18]), list(state[18:27]), list(state[27:36]), list(state[36:45])] #[self.get_side(x) for x in ['L', 'F', 'R', 'B']]
upper_middle = '|' + ''.join([' '.join(side[:3]) + '|' for side in middle])
middle_middle = '|' + ''.join([' '.join(side[3:6]) + '|' for side in middle])
lower_middle = '|' + ''.join([' '.join(side[6:]) + '|' for side in middle])
output = up + '+-----' * 4 + '+\n' + upper_middle + '\n' + middle_middle + '\n' + lower_middle + '\n' + '+-----' * 4 + '+\n' + down
return output
def update(cmd, state):
new_state = {k: v for k, v in state.items()}
h = dct[cmd]
print(h)
for k, v in h.items():
new_state[v] = state[k]
return new_state
def perform(seq):
state = {f"{f}{j}":c for j in range(9) for c, f in zip(cols, faces)}
for cmd in seq.split(' '):
new_state = {k: v for k, v in state.items()}
if len(cmd) == 2 and cmd[1] == '2':
for _ in range(2):
state = update(cmd[:1], state)
else:
state = update(cmd, state)
st = "".join("".join(state[k] for k in (f"{f}{i}" for i in range(9))) for f in faces)
print(repr(state))
return st
ans = {'F': 'yyyyyybbbbbwbbwbbwrrrrrrrrryggyggyggooooooooogggwwwwww', 'R': 'yyryyryyrbbbbbbbbbrrwrrwrrwgggggggggyooyooyoowwowwowwo', 'U': 'yyyyyyyyyrrrbbbbbbgggrrrrrroooggggggbbboooooowwwwwwwww', 'L': 'oyyoyyoyybbbbbbbbbyrryrryrrgggggggggoowoowoowrwwrwwrww', 'D': 'yyyyyyyyybbbbbbooorrrrrrbbbggggggrrroooooogggwwwwwwwww', 'B': 'gggyyyyyyybbybbybbrrrrrrrrrggwggwggwooooooooowwwwwwbbb', "F'": 'yyyyyygggbbybbybbyrrrrrrrrrwggwggwggooooooooobbbwwwwww', "R'": 'yyoyyoyyobbbbbbbbbrryrryrrygggggggggwoowoowoowwrwwrwwr', "U'": 'yyyyyyyyyooobbbbbbbbbrrrrrrrrrgggggggggoooooowwwwwwwww', "L'": 'ryyryyryybbbbbbbbbwrrwrrwrrgggggggggooyooyooyowwowwoww', "D'": 'yyyyyyyyybbbbbbrrrrrrrrrgggggggggooooooooobbbwwwwwwwww', "B'": 'bbbyyyyyywbbwbbwbbrrrrrrrrrggyggyggyooooooooowwwwwwggg', 'F2': 'yyyyyywwwbbgbbgbbgrrrrrrrrrbggbggbggoooooooooyyywwwwww', 'R2': 'yywyywyywbbbbbbbbbrrorrorrogggggggggroorooroowwywwywwy', 'U2': 'yyyyyyyyygggbbbbbbooorrrrrrbbbggggggrrroooooowwwwwwwww', 'L2': 'wyywyywyybbbbbbbbborrorrorrgggggggggoorooroorywwywwyww', 'D2': 'yyyyyyyyybbbbbbgggrrrrrroooggggggbbboooooorrrwwwwwwwww', 'B2': 'wwwyyyyyygbbgbbgbbrrrrrrrrrggbggbggbooooooooowwwwwwyyy', 'M': 'yoyyoyyoybbbbbbbbbryrryrryrgggggggggowoowoowowrwwrwwrw', 'E': 'yyyyyyyyybbbooobbbrrrbbbrrrgggrrrgggooogggooowwwwwwwww', 'S': 'yyybbbyyybwbbwbbwbrrrrrrrrrgyggyggygooooooooowwwgggwww', "M'": 'yryyryyrybbbbbbbbbrwrrwrrwrgggggggggoyooyooyowowwowwow', "E'": 'yyyyyyyyybbbrrrbbbrrrgggrrrgggooogggooobbbooowwwwwwwww', "S'": 'yyygggyyybybbybbybrrrrrrrrrgwggwggwgooooooooowwwbbbwww', 'M2': 'ywyywyywybbbbbbbbbrorrorrorgggggggggorooroorowywwywwyw', 'E2': 'yyyyyyyyybbbgggbbbrrrooorrrgggbbbgggooorrrooowwwwwwwww', 'S2': 'yyywwwyyybgbbgbbgbrrrrrrrrrgbggbggbgooooooooowwwyyywww', 'f': 'yyybbbbbbbwwbwwbwwrrrrrrrrryygyygyygoooooooooggggggwww', 'r': 'yrryrryrrbbbbbbbbbrwwrwwrwwgggggggggyyoyyoyyowoowoowoo', 'u': 'yyyyyyyyyrrrrrrbbbggggggrrroooooogggbbbbbbooowwwwwwwww', 'l': 'ooyooyooybbbbbbbbbyyryyryyrgggggggggowwowwowwrrwrrwrrw', 'd': 'yyyyyyyyybbboooooorrrbbbbbbgggrrrrrroooggggggwwwwwwwww', 'b': 'ggggggyyyyybyybyybrrrrrrrrrgwwgwwgwwooooooooowwwbbbbbb', "f'": 'yyyggggggbyybyybyyrrrrrrrrrwwgwwgwwgooooooooobbbbbbwww', "r'": 'yooyooyoobbbbbbbbbryyryyryygggggggggwwowwowwowrrwrrwrr', "u'": 'yyyyyyyyyoooooobbbbbbbbbrrrrrrrrrgggggggggooowwwwwwwww', "l'": 'rryrryrrybbbbbbbbbwwrwwrwwrgggggggggoyyoyyoyyoowoowoow', "d'": 'yyyyyyyyybbbrrrrrrrrrgggggggggooooooooobbbbbbwwwwwwwww', "b'": 'bbbbbbyyywwbwwbwwbrrrrrrrrrgyygyygyyooooooooowwwgggggg', 'f2': 'yyywwwwwwbggbggbggrrrrrrrrrbbgbbgbbgoooooooooyyyyyywww', 'r2': 'ywwywwywwbbbbbbbbbroorooroogggggggggrrorrorrowyywyywyy', 'u2': 'yyyyyyyyyggggggbbboooooorrrbbbbbbgggrrrrrrooowwwwwwwww', 'l2': 'wwywwywwybbbbbbbbboorooroorgggggggggorrorrorryywyywyyw', 'd2': 'yyyyyyyyybbbggggggrrroooooogggbbbbbbooorrrrrrwwwwwwwww', 'b2': 'wwwwwwyyyggbggbggbrrrrrrrrrgbbgbbgbbooooooooowwwyyyyyy', 'X': 'rrrrrrrrrbbbbbbbbbwwwwwwwwwgggggggggyyyyyyyyyooooooooo', 'Y': 'yyyyyyyyyrrrrrrrrrgggggggggooooooooobbbbbbbbbwwwwwwwww', 'Z': 'bbbbbbbbbwwwwwwwwwrrrrrrrrryyyyyyyyyoooooooooggggggggg', "X'": 'ooooooooobbbbbbbbbyyyyyyyyygggggggggwwwwwwwwwrrrrrrrrr', "Y'": 'yyyyyyyyyooooooooobbbbbbbbbrrrrrrrrrgggggggggwwwwwwwww', "Z'": 'gggggggggyyyyyyyyyrrrrrrrrrwwwwwwwwwooooooooobbbbbbbbb', 'X2': 'wwwwwwwwwbbbbbbbbbooooooooogggggggggrrrrrrrrryyyyyyyyy', 'Y2': 'yyyyyyyyygggggggggooooooooobbbbbbbbbrrrrrrrrrwwwwwwwww', 'Z2': 'wwwwwwwwwgggggggggrrrrrrrrrbbbbbbbbboooooooooyyyyyyyyy'}
test = "U"
perform(test)
res = ans[test]
print(show(res))
To embed this program on your website, copy the following code and paste it into your website's HTML: