Facebook
From gutma, 3 Years ago, written in JavaScript.
This paste is a reply to cube state final version from gutma - view diff
Embed
Download Paste or View Raw
Hits: 120
  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 dw () {
  61.         u(); yp()
  62.     }
  63.     function dp () {
  64.         x2(); up(); x2()
  65.     }
  66.     function dwp () {
  67.         up(); y()
  68.     }
  69.     function d2 () {
  70.         d(); d()
  71.     }
  72.     function dw2 () {
  73.         u2(); y2()
  74.     }
  75.     function r () {
  76.         zp(); u(); z()
  77.     }
  78.     function rp () {
  79.         zp(); up(); z()
  80.     }
  81.     function r2 () {
  82.         r(); r()
  83.     }
  84.     function l () {
  85.         z(); u(); zp()
  86.     }
  87.     function lw() {
  88.         r(); xpp()
  89.     }
  90.     function lp () {
  91.         z(); up(); zp()
  92.     }
  93.     function lwp () {
  94.         rp(); x()
  95.     }
  96.     function l2 () {
  97.         l(); l()
  98.     }
  99.     function lw2() {
  100.         r2(); x2()
  101.     }
  102.     function f () {
  103.         x(); u(); xpp()
  104.     }
  105.     function fp () {
  106.         x(); up(); xpp()
  107.     }
  108.     function f2 () {
  109.         f(); f()
  110.     }
  111.     function fw2 () {
  112.         xpp(); u2(); xpp(); y2()
  113.     }
  114.     function b () {
  115.         xpp(); u(); x()
  116.     }
  117.     function bw () {
  118.         f(); z()
  119.     }
  120.     function bp () {
  121.         xpp(); up(); x()
  122.     }
  123.     function bwp () {
  124.         fp(); zp()
  125.     }
  126.     function b2 () {
  127.         b(); b()
  128.     }
  129.     function bw2() {
  130.         f2(); z2()
  131.     }
  132.     function uw () {
  133.         d(); y()
  134.     }
  135.     function uwp () {
  136.         dp(); yp()
  137.     }
  138.     function uw2 () {
  139.         uw(); uw()
  140.     }
  141.     function rw () {
  142.         l(); x()
  143.     }
  144.     function rwp () {
  145.         lp(); xpp()
  146.     }
  147.     function rw2 () {
  148.         l2(); x2()
  149.     }
  150.     function fw () {
  151.         b(); z()
  152.     }
  153.     function fwp () {
  154.         bp(); zp()
  155.     }
  156.     let moves = {
  157.         "U": u,
  158.         "U'": up,
  159.         "U2": u2,
  160.         "D": d,
  161.         "D'": dp,
  162.         "D2": d2,
  163.         "R": r,
  164.         "R'": rp,
  165.         "R2": r2,
  166.         "L": l,
  167.         "L'": lp,
  168.         "L2": l2,
  169.         "F": f,
  170.         "F'": fp,
  171.         "F2": f2,
  172.         "B": b,
  173.         "B'": bp,
  174.         "B2": b2,
  175.         "Uw": uw,
  176.         "Uw'": uwp,
  177.         "Uw2": uw2,
  178.         "Dw": dw,
  179.         "Dw'": dwp,
  180.         "Dw2": dw2,
  181.         "Rw": rw,
  182.         "Rw'": rwp,
  183.         "Rw2": rw2,
  184.         "Lw": lw,
  185.         "Lw'": lwp,
  186.         "Lw2": lw2,
  187.         "Fw": fw,
  188.         "Fw'": fwp,
  189.         "Fw2": fw2,
  190.         "Bw": bw,
  191.         "Bw'": bwp,
  192.         "Bw2": bw2,
  193.         "x": x,
  194.         "x'": xpp,
  195.         "x2": x2,
  196.         "y": y,
  197.         "y'": yp,
  198.         "y2": y2,
  199.         "z": z,
  200.         "z'": zp,
  201.         "z2": z2
  202.     }
  203.     for (let move = 0; move<splitScramble.length; move++) {
  204.         moves[splitScramble[move]]()
  205.     }
  206.    
  207.     console.log([cp, co, ep, eo, xp])
  208.     for (let move = 0; move<splitSolution.length; move++) {
  209.         moves[splitSolution[move]]()
  210.     }
  211.     let newss = ""
  212.     for (let i = 0; i<splitSolution.length; i++) {
  213.         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]!=" ") {
  214.             newss += splitSolution[i] + " "
  215.         }
  216.     }
  217.    
  218.     for (let i = 0; i<4; i++) {
  219.         let currentState = [cp, co, ep, eo, xp]
  220.         x()
  221.         if (currentState.toString() == solvedState.toString()) {
  222.             return "Solved! " + (newss.split(" ").length-1) + " moves."
  223.         }
  224.         else {
  225.             for (let i = 0; i<4; i++) {
  226.                 let currentState = [cp, co, ep, eo, xp]
  227.                 y()
  228.                 if (currentState.toString() == solvedState.toString()) {
  229.                     return "Solved! " + (newss.split(" ").length-1) + " moves."
  230.                 }
  231.                 else {
  232.                     for (let i = 0; i<4; i++) {
  233.                         let currentState = [cp, co, ep, eo, xp]
  234.                         z()
  235.                         if (currentState.toString() == solvedState.toString()) {
  236.                             return "Solved! " + (newss.split(" ").length-1) + " moves."
  237.                         }
  238.                     }
  239.                 }
  240.             }
  241.         }  
  242.     } return "Not solved :("
  243. }
  244.  
  245.  
  246. console.log(isSolved3x3("F2 L2 U' B2 L2 D2 B2 D R2 U2 B2 R2 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 L U R y L' U' L 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 R' F R U R U2 R' U'"))

Replies to Re: cube state final version rss

Title Name Language When
issolved gutma javascript 3 Years ago.