Facebook
From gutma, 4 Years ago, written in JavaScript.
Embed
Download Paste or View Raw
Hits: 93
  1. function isSolved3x3 (scramble, solution) {
  2.     let cp = [0, 1, 2, 3, 4, 5, 6, 7]
  3.     let co = [0, 0, 0, 0, 0, 0, 0, 0]
  4.     let ep = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
  5.     let eo = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
  6.     let xp = [0, 1, 2, 3, 4, 5]
  7.     let splitScramble = scramble.split(" ")
  8.     let splitSolution = solution.split(" ")
  9.     let solvedState = [cp, co, ep, eo, xp]
  10.     function u () {
  11.         cp = [cp[3], cp[0], cp[1], cp[2], cp[4], cp[5], cp[6], cp[7]]
  12.         co = [co[3], co[0], co[1], co[2], co[4], co[5], co[6], co[7]]
  13.         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]]
  14.         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]]
  15.     }
  16.     function x () {
  17.         cp = [cp[3], cp[2], cp[5], cp[4], cp[7], cp[6], cp[1], cp[0]]
  18.         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]
  19.         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]]
  20.         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]
  21.         xp = [xp[2], xp[1], xp[5], xp[3], xp[0], xp[4]]
  22.     }
  23.     function xpp () {
  24.         x(); x(); x()
  25.     }
  26.     function x2 () {
  27.         x(); x()
  28.     }
  29.     function y () {
  30.         cp = [cp[3], cp[0], cp[1], cp[2], cp[5], cp[6], cp[7], cp[4]]
  31.         co = [co[3], co[0], co[1], co[2], co[5], co[6], co[7], co[4]]
  32.         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]]
  33.         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]]
  34.         xp = [xp[0], xp[2], xp[3], xp[4], xp[1], xp[5]]
  35.     }
  36.     function yp () {
  37.         y(); y(); y()
  38.     }
  39.     function y2 () {
  40.         y(); y()
  41.     }
  42.     function z () {
  43.         x(); y(); xpp()
  44.     }
  45.     function zp () {
  46.         z(); z(); z()
  47.     }
  48.     function z2 () {
  49.         z(); z()
  50.     }
  51.     function up () {
  52.         u(); u(); u()
  53.     }
  54.     function u2 () {
  55.         u(); u()
  56.     }
  57.     function d () {
  58.         x2(); u(); x2()
  59.     }
  60.     function dp () {
  61.         x2(); up(); x2()
  62.     }
  63.     function d2 () {
  64.         d(); d()
  65.     }
  66.     function r () {
  67.         zp(); u(); z()
  68.     }
  69.     function rp () {
  70.         zp(); up(); z()
  71.     }
  72.     function r2 () {
  73.         r(); r()
  74.     }
  75.     function l () {
  76.         z(); u(); zp()
  77.     }
  78.     function lp () {
  79.         z(); up(); zp()
  80.     }
  81.     function l2 () {
  82.         l(); l()
  83.     }
  84.     function f () {
  85.         x(); u(); xpp()
  86.     }
  87.     function fp () {
  88.         x(); up(); xpp()
  89.     }
  90.     function f2 () {
  91.         f(); f()
  92.     }
  93.     function b () {
  94.         xpp(); u(); x()
  95.     }
  96.     function bp () {
  97.         xpp(); up(); x()
  98.     }
  99.     function b2 () {
  100.         b(); b()
  101.     }
  102.     function uw () {
  103.         d(); y()
  104.     }
  105.     function uwp () {
  106.         dp(); yp()
  107.     }
  108.     function uw2 () {
  109.         uw(); uw()
  110.     }
  111.     function rw () {
  112.         l(); x()
  113.     }
  114.     function rwp () {
  115.         lp(); xpp()
  116.     }
  117.     function rw2 () {
  118.         l2(); x2()
  119.     }
  120.     function fw () {
  121.         b(); z()
  122.     }
  123.     function fwp () {
  124.         bp(); zp()
  125.     }
  126.     let moves = {
  127.         "U": u,
  128.         "U'": up,
  129.         "U2": u2,
  130.         "D": d,
  131.         "D'": dp,
  132.         "D2": d2,
  133.         "R": r,
  134.         "R'": rp,
  135.         "R2": r2,
  136.         "L": l,
  137.         "L'": lp,
  138.         "L2": l2,
  139.         "F": f,
  140.         "F'": fp,
  141.         "F2": f2,
  142.         "B": b,
  143.         "B'": bp,
  144.         "B2": b2,
  145.         "Uw": uw,
  146.         "Uw'": uwp,
  147.         "Uw2": uw2,
  148.         "Rw": rw,
  149.         "Rw'": rwp,
  150.         "Rw2": rw2,
  151.         "Fw": fw,
  152.         "Fw'": fwp,
  153.         "x": x,
  154.         "x'": xpp,
  155.         "x2": x2,
  156.         "y": y,
  157.         "y'": yp,
  158.         "y2": y2,
  159.         "z": z,
  160.         "z'": zp,
  161.         "z2": z2
  162.     }
  163.     for (let move = 0; move<splitScramble.length; move++) {
  164.         moves[splitScramble[move]]()
  165.     }
  166.    
  167.     console.log([cp, co, ep, eo, xp])
  168.     for (let move = 0; move<splitSolution.length; move++) {
  169.         moves[splitSolution[move]]()
  170.     }
  171.     let newss = ""
  172.     for (let i = 0; i<splitSolution.length; i++) {
  173.         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]!=" ") {
  174.             newss += splitSolution[i] + " "
  175.         }
  176.     }
  177.    
  178.     for (let i = 0; i<4; i++) {
  179.         let currentState = [cp, co, ep, eo, xp]
  180.         x()
  181.         if (currentState.toString() == solvedState.toString()) {
  182.             return "Solved! " + (newss.split(" ").length-1) + " moves."
  183.         }
  184.         else {
  185.             for (let i = 0; i<4; i++) {
  186.                 let currentState = [cp, co, ep, eo, xp]
  187.                 y()
  188.                 if (currentState.toString() == solvedState.toString()) {
  189.                     return "Solved! " + (newss.split(" ").length-1) + " moves."
  190.                 }
  191.                 else {
  192.                     for (let i = 0; i<4; i++) {
  193.                         let currentState = [cp, co, ep, eo, xp]
  194.                         z()
  195.                         if (currentState.toString() == solvedState.toString()) {
  196.                             return "Solved! " + (newss.split(" ").length-1) + " moves."
  197.                         }
  198.                     }
  199.                 }
  200.             }
  201.         }  
  202.     } return "Not solved :("
  203. }
  204.  
  205.  
  206. console.log(isSolved3x3("B R2 B2 D2 B2 D L B2 U R2 F' L2 F U2 R2 U2 R2 F U2 F", "R2 F D' B D' L U' L' U L U L' U2 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' U R U' R' U2 L x U L F' L B2 L' F L B2 L2 x B y z z z y2 z2 x2 F x U'"))

Replies to cube state final version rss

Title Name Language When
Re: cube state final version gutma javascript 4 Years ago.