let cp = [0, 1, 2, 3, 4, 5, 6, 7]
let co = [0, 0, 0, 0, 0, 0, 0, 0]
let ep = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
let eo = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
let xp = [0, 1, 2, 3, 4, 5]
let splitScramble = scramble.split(" ")
let splitSolution = solution.split(" ")
let solvedState = [cp, co, ep, eo, xp]
function u () {
cp = [cp[3], cp[0], cp[1], cp[2], cp[4], cp[5], cp[6], cp[7]]
co = [co[3], co[0], co[1], co[2], co[4], co[5], co[6], co[7]]
ep = [ep[3], ep[0], ep[1], ep[2], ep[4], ep[5], ep[6], ep[7], ep[8], ep[9], ep[10], ep[11]]
eo = [eo[3], eo[0], eo[1], eo[2], eo[4], eo[5], eo[6], eo[7], eo[8], eo[9], eo[10], eo[11]]
}
function x () {
cp = [cp[3], cp[2], cp[5], cp[4], cp[7], cp[6], cp[1], cp[0]]
co = [(co[3]+1)%3, (co[2]+2)%3, (co[5]+1)%3, (co[4]+2)%3, (co[7]+1)%3, (co[6]+2)%3, (co[1]+1)%3, (co[0]+2)%3]
ep = [ep[2], ep[6], ep[8], ep[7], ep[3], ep[1], ep[9], ep[11], ep[10], ep[5], ep[0], ep[4]]
eo = [(eo[2]+1)%2, (eo[6])%2, (eo[8]+1)%2, (eo[7])%2, (eo[3])%2, (eo[1])%2, (eo[9])%2, (eo[11])%2, (eo[10]+1)%2, (eo[5])%2, (eo[0]+1)%2, (eo[4])%2]
xp = [xp[2], xp[1], xp[5], xp[3], xp[0], xp[4]]
}
function xpp () {
x(); x(); x()
}
function x2 () {
x(); x()
}
function y () {
cp = [cp[3], cp[0], cp[1], cp[2], cp[5], cp[6], cp[7], cp[4]]
co = [co[3], co[0], co[1], co[2], co[5], co[6], co[7], co[4]]
ep = [ep[3], ep[0], ep[1], ep[2], ep[7], ep[4], ep[5], ep[6], ep[9], ep[10], ep[11], ep[8]]
eo = [eo[3], eo[0], eo[1], eo[2], (eo[7]+1)%2, (eo[4]+1)%2, (eo[5]+1)%2, (eo[6]+1)%2, eo[9], eo[10], eo[11], eo[8]]
xp = [xp[0], xp[2], xp[3], xp[4], xp[1], xp[5]]
}
function yp () {
y(); y(); y()
}
function y2 () {
y(); y()
}
function z () {
x(); y(); xpp()
}
function zp () {
z(); z(); z()
}
function z2 () {
z(); z()
}
function up () {
u(); u(); u()
}
function u2 () {
u(); u()
}
function d () {
x2(); u(); x2()
}
function dw () {
u(); yp()
}
function dp () {
x2(); up(); x2()
}
function dwp () {
up(); y()
}
function d2 () {
d(); d()
}
function dw2 () {
u2(); y2()
}
function r () {
zp(); u(); z()
}
function rp () {
zp(); up(); z()
}
function r2 () {
r(); r()
}
function l () {
z(); u(); zp()
}
function lw() {
r(); xpp()
}
function lp () {
z(); up(); zp()
}
function lwp () {
rp(); x()
}
function l2 () {
l(); l()
}
function lw2() {
r2(); x2()
}
function f () {
x(); u(); xpp()
}
function fp () {
x(); up(); xpp()
}
function f2 () {
f(); f()
}
function fw2 () {
xpp(); u2(); xpp(); y2()
}
function b () {
xpp(); u(); x()
}
function bw () {
f(); z()
}
function bp () {
xpp(); up(); x()
}
function bwp () {
fp(); zp()
}
function b2 () {
b(); b()
}
function bw2() {
f2(); z2()
}
function uw () {
d(); y()
}
function uwp () {
dp(); yp()
}
function uw2 () {
uw(); uw()
}
function rw () {
l(); x()
}
function rwp () {
lp(); xpp()
}
function rw2 () {
l2(); x2()
}
function fw () {
b(); z()
}
function fwp () {
bp(); zp()
}
let moves = {
"U": u,
"U'": up,
"U2": u2,
"D": d,
"D'": dp,
"D2": d2,
"R": r,
"R'": rp,
"R2": r2,
"L": l,
"L'": lp,
"L2": l2,
"F": f,
"F'": fp,
"F2": f2,
"B": b,
"B'": bp,
"B2": b2,
"Uw": uw,
"Uw'": uwp,
"Uw2": uw2,
"Dw": dw,
"Dw'": dwp,
"Dw2": dw2,
"Rw": rw,
"Rw'": rwp,
"Rw2": rw2,
"Lw": lw,
"Lw'": lwp,
"Lw2": lw2,
"Fw": fw,
"Fw'": fwp,
"Fw2": fw2,
"Bw": bw,
"Bw'": bwp,
"Bw2": bw2,
"x": x,
"x'": xpp,
"x2": x2,
"y": y,
"y'": yp,
"y2": y2,
"z": z,
"z'": zp,
"z2": z2
}
for (let move = 0; move
}
console.log([cp, co, ep, eo, xp])
for (let move = 0; move
}
let newss = ""
for (let i = 0; i
newss += splitSolution[i] + " "
}
}
for (let i = 0; i<4; i++) {
let currentState = [cp, co, ep, eo, xp]
x()
if (currentState.toString() == solvedState.toString()) {
return "Solved! " + (newss.split(" ").length-1) + " moves."
}
else {
for (let i = 0; i<4; i++) {
let currentState = [cp, co, ep, eo, xp]
y()
if (currentState.toString() == solvedState.toString()) {
return "Solved! " + (newss.split(" ").length-1) + " moves."
}
else {
for (let i = 0; i<4; i++) {
let currentState = [cp, co, ep, eo, xp]
z()
if (currentState.toString() == solvedState.toString()) {
return "Solved! " + (newss.split(" ").length-1) + " moves."
}
}
}
}
}
} return "Not solved :("
}
console.