#!/usr/bin/env python3 import re,urllib.request s=urllib.request.urlopen("https://raw.githubusercontent.com/or18/Rubiks-cube-xcross-solver/main/cli_lite_without_thread.cpp").read().decode() m={line.split('"')[1]:[list(map(int,re.findall(r"\d+",a))) for a in re.findall(r"\{([0-9, ]+)\}",line)] for line in s.splitlines() if line.strip().startswith('{"') and 'State({' in line} alg="R2 U F2 U2 B2 U2 R' U2 F2 R' B2 D2 R U2 D L' R2 D2 F L B'F' U' R L' D R' B R F2 L' F2 L D".replace("B'F'","B' F'").split() faces="UDLRFB" def rot(t,o): f={"x2":"DULRBF","y'":"UDFBRL"}[o] return [f[faces.index(x[0])]+x[1:] for x in t] alg=rot(rot(alg,"x2"),"y'") print("rotated"," ".join(alg)) cp=list(range(8));co=[0]*8;ep=list(range(12));eo=[0]*12 for x in alg: a,b,c,d=m[x] cp,co,ep,eo=([cp[i] for i in a],[(co[i]+z)%3 for i,z in zip(a,b)],[ep[i] for i in c],[(eo[i]+z)%2 for i,z in zip(c,d)]) print("cp",cp,"co",co,"ep",ep,"eo",eo) print("yellow D cross",list(zip(ep[8:],eo[8:]))) for i,slot in enumerate(["BL","BR","FR","FL"]): c=4+i;e=i print(slot,"corner",cp.index(c),co[cp.index(c)],"edge",ep.index(e),eo[ep.index(e)])