Facebook
From gutma, 3 Years ago, written in JavaScript.
This paste is a reply to cube state final version from gutma - go back
Embed
Viewing differences between cube state final version and Re: cube state final version
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         moves[splitScramble[move]]()
    }
    
    console.log([cp, co, ep, eo, xp])
    for (let move = 0; move         moves[splitSolution[move]]()
    }
    let newss = ""
    for (let i = 0; i         if (splitSolution[i]!="x" && splitSolution[i]!="x'" && splitSolution[i]!="x2" && splitSolution[i]!="y" && splitSolution[i]!="y'" && splitSolution[i]!="y2" && splitSolution[i]!="z" && splitSolution[i]!="z'" && splitSolution[i]!="z2" && splitSolution[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.log(isSolved3x3("B R2 log(isSolved3x3("F2 L2 U' B2 L2 D2 B2 D R2 U2 B2 R2 F' B' L' F2 D2 L F R B'", "y x' F2 R' U' L2 R B' R2 U R U L U L2 R U2 R2 U2 R2 F U2 F", "R2 F D' B D' L U' L' U L U L' U2 R y L' U' L U L' U' L R' U R U2 R U' R' B U2 B' U B' R B R' U Rw' U' R U' R' U2 y' R' U' R U' x U' L U R' U' L' U R x' U' R U R' F' R U2 R' U2 L x R' F R L F' L B2 L' F L B2 L2 x B y z z z y2 z2 x2 F x R U2 R' U'"))

Replies to Re: cube state final version rss

Title Name Language When
issolved gutma javascript 3 Years ago.