function isSolved3x3 (scramble, solution) { 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