#!/usr/bin/env python3 p="DABCEFGHLIJKMNOPQRST|EBCAHFGDQJKLTNOPMRSI|BFCDAEGHIRKLMQOPJNST|ABCDFGHEIJKLNOPMQRST|ACGDEBFHIJSLMNRPQKOT|ABDHEFCGIJKTMNOSQRLP".split("|") o=[[0]*20,[2,0,0,1,1,0,0,2]+[0]*12,[1,2,0,0,2,1,0,0,0,1,0,0,0,1,0,0,1,1,0,0],[0]*20,[0,1,2,0,0,2,1]+[0]*13,[0,0,1,2,0,0,2,1,0,0,0,1,0,0,0,1,0,0,1,1]] def turn(s,a): q=[ord(x)-65 for x in p[a]] return [3*(s[q[i]]//3)+(s[q[i]]%3+o[a][i])%3 for i in range(8)]+[2*(s[q[i]]//2)+(s[q[i]]%2+o[a][i])%2 for i in range(8,20)] s=[3*i for i in range(8)]+[2*i for i in range(12)] scr="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" for x in scr.split(): a="URFDLB".index(x[0]);n=2 if "2" in x else 3 if "'" in x else 1 for j in range(n):s=turn(s,a) print(s)