UNPKG

deltascrambler

Version:

Scramble and scramble image generator for all WCA and lots of non-WCA puzzles

125 lines (118 loc) 2.96 kB
function id(x) { return x; } function change_notation(moves, move_gen, img_gen, notation_equiv_class, config) { var cfg = { "222": [id, NNN2yo], "333": [id, NNN2yo], "444": [id, c444], "555": [id, c444], "666": [id, c444], "777": [id, c444], "megam": [id, mega2nolinebr, mega2carrot, mega2oldstyle], "clock": [id], "sq1": [id, karnaukh] }; if (cfg[notation_equiv_class] && cfg[notation_equiv_class][config.notationStyle]) return cfg[notation_equiv_class][config.notationStyle](moves); return id(moves); } function mega2carrot(moves) { moves = moves.join(" ").split("\n").join(" ").split(" "); var out = []; for (var i = 0; i < moves.length; ++i) { if (moves[i][0] == "R") { out.push(moves[i][1] + moves[i + 1][1]); ++i; } else if(moves[i][0] == "U"){ out.push(moves[i]+"\n"); } } return out; } function mega2nolinebr(moves) { return moves.join(" ").split("\n").join(" ").split(" "); } function mega2oldstyle(moves){ var out = []; var sides = ["U","F","R","D","B","L","DR","DL","DBR","DBL","BR","BL"]; function doRPP(sides){ return [sides[7], sides[9], sides[3], sides[10], sides[0], sides[5], sides[8], sides[4], sides[11], sides[2], sides[6], sides[1]] } function doRMM(sides){ return doRPP(doRPP(doRPP(doRPP(sides)))); } function doUPP(sides){ return [sides[0], sides[11], sides[5], sides[3], sides[6], sides[10], sides[9], sides[8], sides[7], sides[4], sides[1], sides[2]] } function doUMM(sides){ return doUPP(doUPP(doUPP(doUPP(sides)))); } for(var i=0;i<moves.length;++i){ switch(moves[i]){ case "R++": sides = doRPP(sides); out.push(sides[5]+"2-"); break; case "R--": sides = doRMM(sides); out.push(sides[5]+"2+"); break; case "D++": sides = doUPP(sides); out.push(sides[0]+"2-"); break; case "D--": sides = doUMM(sides); out.push(sides[0]+"2+"); break; case "U": out.push(sides[0]); break; case "U'": out.push(sides[0]+"-"); break; } } return out; } function NNN2yo(moves){ var out = []; for(var i=0;i<moves.length;++i){ out.push({ "U":"A", "U'":"B", "U2":"C", "D":"D", "D'":"E", "D2":"F", "L":"G", "L'":"H", "L2":"I", "R":"J", "R'":"K", "R2":"L", "M":"M", "M'":"N", "M2":"O", "E":"P", "E'":"Q", "E2":"R", "S":"S", "S'":"T", "S2":"U", "F":"V", "F'":"W", "F2":"X", "B":"Y", "B'":"Z", "B2": "YY" }[moves[i]] || moves[i]); } return out; } function c444(moves){ return moves.join(" ") .split("Fw").join("f").split("Bw").join("b") .split("Rw").join("r").split("Lw").join("l") .split("Uw").join("u").split("Dw").join("d") .split(" "); } function karnaukh(moves){ return moves.join(" ") .split("3,0").join("U") .split("-3,0").join("U'") .split("0,3").join("D") .split("0,-3").join("D'") .split("2,1").join("u") .split("-2,1").join("u'") .split("-1,2").join("d") .split("1,-2").join("d'") .split("(").join("") .split(")").join("") .split(" ") }