Skip to content

Commit

Permalink
add random-ori option in bld helper, use random-state scrambler for <…
Browse files Browse the repository at this point in the history
…M,U> and <R,r,U>, limit minimum scramble length of some subsets
  • Loading branch information
cs0x7f committed Sep 6, 2024
1 parent f1ab98f commit 2e18402
Show file tree
Hide file tree
Showing 38 changed files with 133 additions and 78 deletions.
4 changes: 2 additions & 2 deletions src/js/scramble/megascramble.js
Original file line number Diff line number Diff line change
Expand Up @@ -34,10 +34,10 @@
"ufo": [[["A"],["B"],["C"],[["U","U'","U2'","U2","U3"]]]], // UFO
// "2gen": [[["U"],["R"]],cubesuff], // 2-generator <R,U>
// "2genl": [[["U"],["L"]],cubesuff], // 2-generator <L,U>
"roux": [[["U"],["M"]],cubesuff], // Roux-generator <M,U>
// "roux": [[["U"],["M"]],cubesuff], // Roux-generator <M,U>
// "3gen_F": [[["U"],["R"],["F"]],cubesuff], // 3-generator <F,R,U>
// "3gen_L": [[["U"],["R","L"]],cubesuff], // 3-generator <R,U,L>
"RrU": [[["U"],["R","r"]],cubesuff], // 3-generator <R,r,U>
// "RrU": [[["U"],["R","r"]],cubesuff], // 3-generator <R,r,U>
"RrUu": [[["U","u"],["R","r"]],cubesuff], // <R,r,U,u>
"minx2g": [[["U"],["R"]],minxsuff], // megaminx 2-gen
// "half": [[["U","D"],["R","L"],["F","B"]],["2"]], // 3x3x3 half turns, replaced by random state solver
Expand Down
53 changes: 49 additions & 4 deletions src/js/scramble/scramble_333_edit.js
Original file line number Diff line number Diff line change
Expand Up @@ -919,6 +919,45 @@ var scramble_333 = (function(getNPerm, setNPerm, getNParity, rn, rndEl) {
return getAnyScramble(cases[0], cases[1], cases[2], cases[3], neut);
}

var normTrans = [];

function normOrient(facelet, toAppend) {
var rotMoves1 = ["", "x", "x2", "x'", "z", "z'"];
var rotMoves2 = ["", "y", "y2", "y'"];
if (normTrans.length == 0) {
for (var i = 0; i < 24; i++) {
var cc = new mathlib.CubieCube();
cc.selfMoveStr(rotMoves2[i & 3]);
cc.selfMoveStr(rotMoves1[i >> 2]);
normTrans.push(cc.toPerm(null, null, null, true));
}
}
var ori = 0;
out: for (var i = 0; i < 24; i++) {
for (var j = 0; j < 6; j++) {
if (facelet[normTrans[i][j * 9 + 4]] != "URFDLB".charAt(j)) {
continue out;
}
}
var ret = [];
for (var j = 0; j < 54; j++) {
ret[j] = facelet[normTrans[i][j]];
}
facelet = ret.join('');
ori = i;
break;
}
var mv1 = rotMoves1[ori >> 2];
if (mv1 != "") {
toAppend.push(mv1[0] + "'2 ".charAt("2'".indexOf(mv1[1]) + 1));
}
var mv2 = rotMoves2[ori & 3];
if (mv2 != "") {
toAppend.push(mv2[0] + "'2 ".charAt("2'".indexOf(mv2[1]) + 1));
}
return facelet;
}

var subsetSolvs = {};

function subsetScramble(moves) {
Expand All @@ -928,7 +967,7 @@ var scramble_333 = (function(getNPerm, setNPerm, getNParity, rn, rndEl) {
for (var m = 0; m < moves.length; m++) {
var cc = new mathlib.CubieCube();
cc.selfMoveStr(moves[m]);
gens.push(cc.toPerm());
gens.push(cc.toPerm(null, null, null, true));
}
subsetSolvs[key] = new grouplib.SubgroupSolver(gens);
subsetSolvs[key].initTables();
Expand All @@ -938,19 +977,23 @@ var scramble_333 = (function(getNPerm, setNPerm, getNParity, rn, rndEl) {
if (solv.sgsG.size() < 1e8) {
do {
var state = subsetSolvs[key].sgsG.rndElem();
var sol = subsetSolvs[key].DissectionSolve(state, 0, 20);
var sol = subsetSolvs[key].DissectionSolve(state, 12, 20);
solution = sol.map((mvpow) => moves[mvpow[0]] + ["", "2", "'"][mvpow[1] - 1]).join(" ");
} while (solution.length <= 2);
return solution.replace(/ +/g, ' ');
}
var toAppend;
do {
var state = subsetSolvs[key].sgsG.rndElem();
for (var i = 0; i < state.length; i++) {
state[i] = "URFDLB".charAt(~~(state[i] / 9));
}
solution = search.solution(state.join(''), 21, 1e9, 50, 2);
toAppend = [];
state = normOrient(state.join(''), toAppend);
solution = search.solution(state, 21, 1e9, 50, 2);
} while (solution.length <= 3);
return solution.replace(/ +/g, ' ');
toAppend.unshift(solution);
return toAppend.join(' ').replace(/ +/g, ' ');
}

function genFacelet(facelet) {
Expand Down Expand Up @@ -1093,6 +1136,8 @@ var scramble_333 = (function(getNPerm, setNPerm, getNParity, rn, rndEl) {
('3gen_L', subsetScramble.bind(null, ["U", "R", "L"]))
('2gen', subsetScramble.bind(null, ["U", "R"]))
('2genl', subsetScramble.bind(null, ["U", "L"]))
('RrU', subsetScramble.bind(null, ["R", "Rw", "U"]))
('roux', subsetScramble.bind(null, ["M", "U"]))
('mt3qb', getMehta3QBScramble)
('mteole', getMehtaEOLEScramble)
('mttdr', getMehtaTDRScramble)
Expand Down
16 changes: 13 additions & 3 deletions src/js/tools/bldhelper.js
Original file line number Diff line number Diff line change
Expand Up @@ -451,8 +451,8 @@ var bldhelper = execMain(function() {
ea[edgeMap[i]] = edgeMap[ret[2][i][0]] << 1 | ret[2][i][1];
}
var cc = new mathlib.CubieCube();
var rndX = mathlib.rndEl(["", "Rw", "Rw2", "Rw'", "Fw", "Fw'"]);
var rndY = mathlib.rndEl(["", "Uw", "Uw2", "Uw'"]);
var rndX = bldSets['ceori'] ? mathlib.rndEl(["", "Rw", "Rw2", "Rw'", "Fw", "Fw'"]) : "";
var rndY = bldSets['ceori'] ? mathlib.rndEl(["", "Uw", "Uw2", "Uw'"]) : "";
var move1 = cc.selfMoveStr(rndX);
var move2 = cc.selfMoveStr(rndY);
cc.init(ca, ea);
Expand Down Expand Up @@ -490,6 +490,7 @@ var bldhelper = execMain(function() {
'escycLR': [0, 5],
'encodeLR': [0, 16],
'ceparity': 0x3,
'ceori': true,
'scheme': Speffz
};

Expand All @@ -512,6 +513,8 @@ var bldhelper = execMain(function() {
bldSets[key] = [Math.min(v1, v2), Math.max(v1, v2)];
} else if (key == 'ceparity') {
bldSets[key] = ~~obj.val();
} else if (key == 'ceori') {
bldSets[key] = obj[0].checked;
} else if (key.endsWith('fix')){
var fixs = obj.val().toUpperCase().split(' ');
var fixMap = {};
Expand Down Expand Up @@ -605,6 +608,7 @@ var bldhelper = execMain(function() {
var eNScTxt;
var eNCoTxt;
var parityFlt;
var oriFlt;

function key2Range(bldSets, key) {
return bldSets[key][0] + '-' + bldSets[key][1];
Expand All @@ -628,6 +632,7 @@ var bldhelper = execMain(function() {
cbufFlt.val(bldSets['cbuff'][1]);
ebufFlt.val(bldSets['ebuff'][1]);
parityFlt.val(bldSets['ceparity']);
oriFlt[0].checked = bldSets['ceori'];
var ret = genBLDRndState(bldSets);
setDiv.append($('<tr>').append($('<th>Coder</th>'), $('<td colspan=2>').append(schSel)));
setDiv.append($('<tr>').append($('<td colspan=3 style="width:0;">').append(codeDiv)));
Expand All @@ -644,8 +649,12 @@ var bldhelper = execMain(function() {
(ret[0] == 0 ? 0 : prob < 1e-3 ? prob.toExponential(3) : Math.round(prob * 1000000) / 10000 + '%') +
(prob < 1e-8 ? ('<br>N=' + (ret[0] > 1e8 ? ret[0].toExponential(3) : ret[0])) : '')
)));
setDiv.append($('<tr>').append(
$('<td>').append($('<label>').append(oriFlt, 'ori')),
'<td colspan=2><span id="scr">' + SCRGEN_GEN + '</span></td>'
));
if (kernel.getProp('scrType') != 'nocache_333bldspec') {
setDiv.append('<tr><td colspan=3><span class="click" id="scr">' + SCRGEN_GEN + '</span></td></tr>');
setDiv.find('#scr').addClass('click');
}
setDiv.find('input,select').css({'padding':0}).unbind('change').change(procBLDSetEvent);
setDiv.find('span.click').unbind('click').click(procBLDSetEvent);
Expand Down Expand Up @@ -735,6 +744,7 @@ var bldhelper = execMain(function() {
eNScTxt = $(inputNumTpl(["escycLR"]));
eNCoTxt = $(inputNumTpl(["encodeLR"]));
parityFlt = $('<select id="ceparity">');
oriFlt = $('<input type="checkbox" id="ceori">');
var bflts = [['any', 0x7], ['ok', 0x1], ['flip', 0x2], ['move', 0x4], ['not ok', 0x6], ['ok/flip', 0x3], ['ok/move', 0x5]];
var bfltOps = bflts.map(optTpl).join('');
cbufFlt.append(bfltOps);
Expand Down
4 changes: 2 additions & 2 deletions src/lang/ar-sa.js
Original file line number Diff line number Diff line change
Expand Up @@ -443,10 +443,10 @@ var scrdata = [
['3x3x3 subsets', [
['2-generator R,U', "2gen", 0],
['2-generator L,U', "2genl", 0],
['Roux-generator M,U', "roux", 25],
['Roux-generator M,U', "roux", 0],
['3-generator F,R,U', "3gen_F", 0],
['3-generator R,U,L', "3gen_L", 0],
['3-generator R,r,U', "RrU", 25],
['3-generator R,r,U', "RrU", 0],
['Domino Subgroup', "333drud", 0],
['half turns only', "half", 0],
['last slot + last layer (old)', "lsll", 15]
Expand Down
4 changes: 2 additions & 2 deletions src/lang/ca-es.js
Original file line number Diff line number Diff line change
Expand Up @@ -443,10 +443,10 @@ var scrdata = [
['3x3x3 Subtipus', [
['2-gen R,U', "2gen", 0],
['2-gen L,U', "2genl", 0],
['Generador Roux M,U', "roux", 25],
['Generador Roux M,U', "roux", 0],
['3-gen F,R,U', "3gen_F", 0],
['3-gen R,U,L', "3gen_L", 0],
['3-gen R,r,U', "RrU", 25],
['3-gen R,r,U', "RrU", 0],
['Domino Subgroup', "333drud", 0],
['Només mitjes voltes', "half", 0],
['Últim espai+Última capa (Antic)', "lsll", 15]
Expand Down
4 changes: 2 additions & 2 deletions src/lang/cs-cz.js
Original file line number Diff line number Diff line change
Expand Up @@ -443,10 +443,10 @@ var scrdata = [
['3 x 3 x 3 podskupiny', [
['2-generátor R,U', "2gen", 0],
['2-generátor L.U', "2genl", 0],
['Roux-generátor M,U', "roux", 25],
['Roux-generátor M,U', "roux", 0],
['3-generátor F,R,U', "3gen_F", 0],
['3-generátor R,U,L', "3gen_L", 0],
['3-generátor R,r,U', "RrU", 25],
['3-generátor R,r,U', "RrU", 0],
['Domino Subgroup', "333drud", 0],
['jen polovina otáčení', "half", 0],
['poslední slot + poslední vrstva (starý)', "lsll", 15]
Expand Down
4 changes: 2 additions & 2 deletions src/lang/da-dk.js
Original file line number Diff line number Diff line change
Expand Up @@ -443,10 +443,10 @@ var scrdata = [
['3x3x3 delmængde', [
['2-generator R,U', "2gen", 0],
['2-generator L,U', "2genl", 0],
['Roux-generator M,U', "roux", 25],
['Roux-generator M,U', "roux", 0],
['3-generator F,R,U', "3gen_F", 0],
['3-generator R,U,L', "3gen_L", 0],
['3-generator R,r,U', "RrU", 25],
['3-generator R,r,U', "RrU", 0],
['Domino Subgroup', "333drud", 0],
['kun halv-rotationer', "half", 0],
['sidste plads + sidste lag (gammel)', "lsll", 15]
Expand Down
4 changes: 2 additions & 2 deletions src/lang/de-de.js
Original file line number Diff line number Diff line change
Expand Up @@ -443,10 +443,10 @@ var scrdata = [
['3x3x3 Teilmengen', [
['2-generator R,U', "2gen", 0],
['2-generator L,U', "2genl", 0],
['Roux-generator M,U', "roux", 25],
['Roux-generator M,U', "roux", 0],
['3-generator F,R,U', "3gen_F", 0],
['3-generator R,U,L', "3gen_L", 0],
['3-generator R,r,U', "RrU", 25],
['3-generator R,r,U', "RrU", 0],
['Domino Subgroup', "333drud", 0],
['nur 180°-Drehungen', "half", 0],
['letzter Slot + letzte Schicht (alt)', "lsll", 15]
Expand Down
4 changes: 2 additions & 2 deletions src/lang/el-gr.js
Original file line number Diff line number Diff line change
Expand Up @@ -443,10 +443,10 @@ var scrdata = [
['3x3x3 subsets', [
['2-generator R,U', "2gen", 0],
['2-generator L,U', "2genl", 0],
['Roux-generator M,U', "roux", 25],
['Roux-generator M,U', "roux", 0],
['3-generator F,R,U', "3gen_F", 0],
['3-generator R,U,L', "3gen_L", 0],
['3-generator R,r,U', "RrU", 25],
['3-generator R,r,U', "RrU", 0],
['Domino Subgroup', "333drud", 0],
['half turns only', "half", 0],
['last slot + last layer (old)', "lsll", 15]
Expand Down
4 changes: 2 additions & 2 deletions src/lang/en-us.js
Original file line number Diff line number Diff line change
Expand Up @@ -443,10 +443,10 @@ var scrdata = [
['3x3x3 subsets', [
['2-generator R,U', "2gen", 0],
['2-generator L,U', "2genl", 0],
['Roux-generator M,U', "roux", 25],
['Roux-generator M,U', "roux", 0],
['3-generator F,R,U', "3gen_F", 0],
['3-generator R,U,L', "3gen_L", 0],
['3-generator R,r,U', "RrU", 25],
['3-generator R,r,U', "RrU", 0],
['Domino Subgroup', "333drud", 0],
['half turns only', "half", 0],
['last slot + last layer (old)', "lsll", 15]
Expand Down
4 changes: 2 additions & 2 deletions src/lang/es-es.js
Original file line number Diff line number Diff line change
Expand Up @@ -443,10 +443,10 @@ var scrdata = [
['Subconjuntos de 3x3x3', [
['Sólo movimientos R,U', "2gen", 0],
['Sólo movimientos L,U', "2genl", 0],
['Sólo movimientos de Roux M,U', "roux", 25],
['Sólo movimientos de Roux M,U', "roux", 0],
['Sólo movimiéntos F,R,U', "3gen_F", 0],
['Sólo movimientos R,U,L', "3gen_L", 0],
['Sólo movimientos R,r,U', "RrU", 25],
['Sólo movimientos R,r,U', "RrU", 0],
['Domino Subgroup', "333drud", 0],
['Sólo giros a medias', "half", 0],
['última capa + último hueco (antiguo)', "lsll", 15]
Expand Down
4 changes: 2 additions & 2 deletions src/lang/fa-ir.js
Original file line number Diff line number Diff line change
Expand Up @@ -443,10 +443,10 @@ var scrdata = [
['3x3x3 subsets', [
['2-generator R,U', "2gen", 0],
['2-generator L,U', "2genl", 0],
['Roux-generator M,U', "roux", 25],
['Roux-generator M,U', "roux", 0],
['3-generator F,R,U', "3gen_F", 0],
['3-generator R,U,L', "3gen_L", 0],
['3-generator R,r,U', "RrU", 25],
['3-generator R,r,U', "RrU", 0],
['Domino Subgroup', "333drud", 0],
['half turns only', "half", 0],
['last slot + last layer (old)', "lsll", 15]
Expand Down
4 changes: 2 additions & 2 deletions src/lang/fi-fi.js
Original file line number Diff line number Diff line change
Expand Up @@ -443,10 +443,10 @@ var scrdata = [
['3x3x3 subsets', [
['2-generator R,U', "2gen", 0],
['2-generator L,U', "2genl", 0],
['Roux-generator M,U', "roux", 25],
['Roux-generator M,U', "roux", 0],
['3-generator F,R,U', "3gen_F", 0],
['3-generator R,U,L', "3gen_L", 0],
['3-generator R,r,U', "RrU", 25],
['3-generator R,r,U', "RrU", 0],
['Domino Subgroup', "333drud", 0],
['half turns only', "half", 0],
['last slot + last layer (old)', "lsll", 15]
Expand Down
4 changes: 2 additions & 2 deletions src/lang/fr-fr.js
Original file line number Diff line number Diff line change
Expand Up @@ -443,10 +443,10 @@ var scrdata = [
['Subsets 3x3x3', [
['Générateur R,U', "2gen", 0],
['Générateur L,U', "2genl", 0],
['Générateur Roux M,U', "roux", 25],
['Générateur Roux M,U', "roux", 0],
['Générateur F,R,U', "3gen_F", 0],
['Générateur R,U,L', "3gen_L", 0],
['Générateur R,r,U', "RrU", 25],
['Générateur R,r,U', "RrU", 0],
['Domino Subgroup', "333drud", 0],
['Demi-tours seulement', "half", 0],
['Dernier slot + dernier étage (ancien)', "lsll", 15]
Expand Down
4 changes: 2 additions & 2 deletions src/lang/he-il.js
Original file line number Diff line number Diff line change
Expand Up @@ -443,10 +443,10 @@ var scrdata = [
['קבוצות משנה 3×3×3', [
['2-ג\'ן R,U', "2gen", 0],
['2-ג\'ן L,U', "2genl", 0],
['רוּ ג\'ן M,U', "roux", 25],
['רוּ ג\'ן M,U', "roux", 0],
['3-ג\'ן F,R,U', "3gen_F", 0],
['3-ג\'ן R,U,L', "3gen_L", 0],
['3-ג\'ן R,r,U', "RrU", 25],
['3-ג\'ן R,r,U', "RrU", 0],
['Domino Subgroup', "333drud", 0],
['חצאי מהלכים בלבד', "half", 0],
['סלוט אחרון + שכבה אחרונה (ישן)', "lsll", 15]
Expand Down
4 changes: 2 additions & 2 deletions src/lang/hi-in.js
Original file line number Diff line number Diff line change
Expand Up @@ -443,10 +443,10 @@ var scrdata = [
['3x3x3 subsets', [
['2-generator R,U', "2gen", 0],
['2-generator L,U', "2genl", 0],
['Roux-generator M,U', "roux", 25],
['Roux-generator M,U', "roux", 0],
['3-generator F,R,U', "3gen_F", 0],
['3-generator R,U,L', "3gen_L", 0],
['3-generator R,r,U', "RrU", 25],
['3-generator R,r,U', "RrU", 0],
['Domino Subgroup', "333drud", 0],
['half turns only', "half", 0],
['last slot + last layer (old)', "lsll", 15]
Expand Down
4 changes: 2 additions & 2 deletions src/lang/hr-hr.js
Original file line number Diff line number Diff line change
Expand Up @@ -443,10 +443,10 @@ var scrdata = [
['3x3x3 subset-ovi', [
['2-generator R,U', "2gen", 0],
['2-generator L,U', "2genl", 0],
['Roux-generator M,U', "roux", 25],
['Roux-generator M,U', "roux", 0],
['3-generator F,R,U', "3gen_F", 0],
['3-generator R,U,L', "3gen_L", 0],
['3-generator R,r,U', "RrU", 25],
['3-generator R,r,U', "RrU", 0],
['Domino Subgroup', "333drud", 0],
['samo polovični potezi', "half", 0],
['zadnji slot + zadnji sloj (stari stil)', "lsll", 15]
Expand Down
4 changes: 2 additions & 2 deletions src/lang/hu-hu.js
Original file line number Diff line number Diff line change
Expand Up @@ -443,10 +443,10 @@ var scrdata = [
['3x3x3 alegységek', [
['2-gen R,U', "2gen", 0],
['2-gen L,U', "2genl", 0],
['Roux-gen M,U', "roux", 25],
['Roux-gen M,U', "roux", 0],
['3-gen F,R,U', "3gen_F", 0],
['3-gen R,U,L', "3gen_L", 0],
['3-gen R,r,U', "RrU", 25],
['3-gen R,r,U', "RrU", 0],
['Domino Subgroup', "333drud", 0],
['csak fél fordulatok', "half", 0],
['utolsó pár + utolsó réteg (régi)', "lsll", 15]
Expand Down
4 changes: 2 additions & 2 deletions src/lang/it-it.js
Original file line number Diff line number Diff line change
Expand Up @@ -443,10 +443,10 @@ var scrdata = [
['Sottoinsieme 3x3x3', [
['2-generatore R,U', "2gen", 0],
['2-generatore L,U', "2genl", 0],
['Roux-generatore M,U', "roux", 25],
['Roux-generatore M,U', "roux", 0],
['3-generatore F,R,U', "3gen_F", 0],
['3-generatore R,U,L', "3gen_L", 0],
['3-generatore R,r,U', "RrU", 25],
['3-generatore R,r,U', "RrU", 0],
['Domino Subgroup', "333drud", 0],
['Solo mezzi giri', "half", 0],
['Ultimo slot + Ultimo strato (vecchio)', "lsll", 15]
Expand Down
4 changes: 2 additions & 2 deletions src/lang/ja-jp.js
Original file line number Diff line number Diff line change
Expand Up @@ -443,10 +443,10 @@ var scrdata = [
['3x3x3 subsets', [
['2-generator R,U', "2gen", 0],
['2-generator L,U', "2genl", 0],
['Roux-generator M,U', "roux", 25],
['Roux-generator M,U', "roux", 0],
['3-generator F,R,U', "3gen_F", 0],
['3-generator R,U,L', "3gen_L", 0],
['3-generator R,r,U', "RrU", 25],
['3-generator R,r,U', "RrU", 0],
['Domino Subgroup', "333drud", 0],
['half turns only', "half", 0],
['last slot + last layer (old)', "lsll", 15]
Expand Down
Loading

0 comments on commit 2e18402

Please sign in to comment.