Skip to content

Commit 97d89a9

Browse files
committed
fix zbll case stats, add cfzb in reconstruct tool
1 parent fc01f71 commit 97d89a9

File tree

3 files changed

+54
-72
lines changed

3 files changed

+54
-72
lines changed

src/js/lib/cubeutil.js

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,23 @@ var cubeutil = (function() {
175175
return 0;
176176
}
177177

178+
//return 6: nothing, 5: cross solved, 2~4: nth f2l solved, 1 eoll solved, 0: solved
179+
function getCF3ZBProgress(param) {
180+
if (solvedProgress(param, crossMask)) {
181+
return 6;
182+
} else if (solvedProgress(param, eollMask)) {
183+
return 1 + Math.max(1,
184+
solvedProgress(param, f2l1Mask) +
185+
solvedProgress(param, f2l2Mask) +
186+
solvedProgress(param, f2l3Mask) +
187+
solvedProgress(param, f2l4Mask)
188+
);
189+
} else if (solvedProgress(param)) {
190+
return 1;
191+
}
192+
return 0;
193+
}
194+
178195
//return 2: nothing, 1: f2l solved, 0: solved
179196
function getFPProgress(param) {
180197
if (solvedProgress(param, f2lMask)) {
@@ -406,7 +423,7 @@ var cubeutil = (function() {
406423
'PLL': [identPLL, scramble_333.getPLLImage, 0, 21, 0],
407424
'OLL': [identOLL, scramble_333.getOLLImage, 1, 58, 1],
408425
'COLL': [identCOLL, scramble_333.getCOLLImage.bind(null, 'D'), 0, 40, 1],
409-
'ZBLL': [identCOLL, scramble_333.getZBLLImage, 0, 493, 1],
426+
'ZBLL': [identZBLL, scramble_333.getZBLLImage, 0, 493, 0],
410427
'CLL': [identC2CLL, scramble_222.getEGLLImage, 0, 40, 1]
411428
};
412429
return method ? identData[method] : identData;
@@ -454,6 +471,8 @@ var cubeutil = (function() {
454471
return getProgressNAxis(facelet, getRouxProgress, 24);
455472
case 'cf4o2p2':
456473
return getProgressNAxis(facelet, getCF4O2P2Progress, 6);
474+
case 'cf3zb':
475+
return getProgressNAxis(facelet, getCF3ZBProgress, 6);
457476
case 'n':
458477
return getProgressNAxis(facelet, solvedProgress, 1);
459478
}
@@ -471,6 +490,8 @@ var cubeutil = (function() {
471490
return ['l6e', 'cmll', 'sb', 'fb'];
472491
case 'cf4o2p2':
473492
return ['pll', 'cpll', 'oll', 'eoll', 'f2l-4', 'f2l-3', 'f2l-2', 'f2l-1', 'cross'];
493+
case 'cf3zb':
494+
return ['zbll', 'zbf2l', 'f2l-3', 'f2l-2', 'f2l-1', 'cross'];
474495
case 'n':
475496
return ['solve'];
476497
}

src/js/stats/recons.js

Lines changed: 28 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,7 @@ var recons = execMain(function() {
228228
isPercent ? Math.round(val[2] / sumSubt * 1000) / 10 + '%' : kernel.pretty(val[2]),
229229
Math.round(val[3] * 10) / 10,
230230
val[3] > 0 && val[1] + val[2] > 0 ? Math.round(val[3] / (val[1] + val[2]) * 10000 ) / 10 : 'N/A',
231-
['oll', 'pll'].indexOf(val[0]) != -1 ? 'click' : ''
231+
['oll', 'pll', 'zbll'].indexOf(val[0]) != -1 ? 'click' : ''
232232
]));
233233
}
234234
var endTr = $('<tr>').append(tidx ? $('<td>').append(requestBack) : $('<td style="padding:0;">').append(rangeSelect),
@@ -388,7 +388,7 @@ var recons = execMain(function() {
388388
}
389389

390390
function showCasesDialog(method) {
391-
kernel.setProp('rcCaseMthd', method);
391+
kernel.setProp('rcCaseMthd', (method == 'ZBLL' ? 'cf3zb_' : 'cf4op_') + method);
392392
caseStat.execFunc(casesDialogContent);
393393
var onCloseDialog = function () {
394394
caseStat.execFunc();
@@ -403,7 +403,7 @@ var recons = execMain(function() {
403403
return;
404404
}
405405
var target = $(e.target);
406-
if (['oll', 'pll'].indexOf(target.text()) != -1) {
406+
if (['oll', 'pll', 'zbll'].indexOf(target.text()) != -1) {
407407
return showCasesDialog(target.text().toUpperCase());
408408
}
409409
if (!target.is('.click') || target.is('.exturl')) {
@@ -454,7 +454,7 @@ var recons = execMain(function() {
454454
for (var i = 0; i < ranges.length; i++) {
455455
rangeSelect.append('<option value="' + ranges[i] + '">' + ranges[i] + '</option>');
456456
}
457-
var methods = [['cf4op', 'cfop'], ['roux', 'roux']];
457+
var methods = [['cf4op', 'cfop'], ['roux', 'roux'], ['cf3zb', 'cfzb']];
458458
for (var i = 0; i < methods.length; i++) {
459459
methodSelect.append('<option value="' + methods[i][0] + '">' + methods[i][1] + '</option>');
460460
methodSelect.append('<option value="' + methods[i][0] + '%">' + methods[i][1] + '%</option>');
@@ -465,15 +465,10 @@ var recons = execMain(function() {
465465

466466
(function() {
467467
stats.regUtil('recons', update);
468-
stats.regExtraInfo('recons_n', function(times) {
469-
return calcRecons(times, 'n');
470-
});
471-
stats.regExtraInfo('recons_cf4op', function(times) {
472-
return calcRecons(times, 'cf4op');
473-
});
474-
stats.regExtraInfo('recons_roux', function(times) {
475-
return calcRecons(times, 'roux');
476-
});
468+
stats.regExtraInfo('recons_n', (times) => calcRecons(times, 'n'));
469+
stats.regExtraInfo('recons_cf4op', (times) => calcRecons(times, 'cf4op'));
470+
stats.regExtraInfo('recons_roux', (times) => calcRecons(times, 'roux'));
471+
stats.regExtraInfo('recons_cf3zb', (times) => calcRecons(times, 'cf3zb'));
477472
stats.regExtraInfo('recons_cfop_ct',
478473
substepMetric.bind(null, 'cf4op', [6, 0], [6, 2]),
479474
['cross ' + STATS_TIME, kernel.pretty]);
@@ -529,9 +524,9 @@ var caseStat = execMain(function() {
529524

530525
var div = $('<div style="font-size:0.9em;">');
531526
var table = $('<table class="table">');
532-
var methodSelect = $('<select>');
527+
var methodStepSelect = $('<select>');
533528
var tableTh = $('<tr>').append(
534-
$('<th>').attr('colspan', 2).css('padding', '0').append(methodSelect),
529+
$('<th>').attr('colspan', 2).css('padding', '0').append(methodStepSelect),
535530
$('<th>').addClass('click').attr('data-sort-column', 2).append('N'),
536531
$('<th>').addClass('click').attr('data-sort-column', 5).append(titleStr[0]),
537532
$('<th>').addClass('click').attr('data-sort-column', 6).append(titleStr[1]),
@@ -545,12 +540,13 @@ var caseStat = execMain(function() {
545540
}
546541
var nsolv = stats.getTimesStatsTable().timesLen;
547542
var nrec = nsolv;
548-
var method = methodSelect.val() || 'PLL';
549-
var ident = cubeutil.getIdentData(method);
543+
var methodStep = methodStepSelect.val() || 'cf4op_PLL';
544+
var step = methodStep.split('_')[1];
545+
var ident = cubeutil.getIdentData(step);
550546
var nvalid = 0;
551547
var caseCnts = [];
552548
for (var s = nsolv - 1; s >= nsolv - nrec; s--) {
553-
var caseData = stats.getExtraInfo('recons_cf4op_' + method, s);
549+
var caseData = stats.getExtraInfo('recons_' + methodStep, s);
554550
if (!caseData) {
555551
continue;
556552
}
@@ -626,16 +622,16 @@ var caseStat = execMain(function() {
626622
row.push(img.attr('src'));
627623
table.append(curTr);
628624
}
629-
methodSelect.unbind('change').change(procMethodChange);
625+
methodStepSelect.unbind('change').change(procMethodChange);
630626
if (nvalid == 0) {
631627
tableTh.after('<tr><td colspan=7>' + TOOLS_RECONS_NODATA + '</td></tr>');
632-
return [method, []];
628+
return [step, []];
633629
}
634-
return [method, trdata];
630+
return [step, trdata];
635631
}
636632

637633
function procMethodChange(e) {
638-
kernel.setProp('rcCaseMthd', methodSelect.val());
634+
kernel.setProp('rcCaseMthd', methodStepSelect.val());
639635
update();
640636
}
641637

@@ -659,18 +655,18 @@ var caseStat = execMain(function() {
659655
return;
660656
}
661657
fdiv.empty().append(div.append(table));
662-
methodSelect.val(kernel.getProp('rcCaseMthd', 'PLL'));
658+
methodStepSelect.val(kernel.getProp('rcCaseMthd', 'cf4op_PLL'));
663659
update();
664660
}
665661

666662
var c;
667663

668-
function calcCaseExtra(method, time, idx) {
669-
var rec = stats.getExtraInfo('recons_cf4op', idx);
664+
function calcCaseExtra(method, step, time, idx) {
665+
var rec = stats.getExtraInfo('recons_' + method, idx);
670666
if (!rec) {
671667
return;
672668
}
673-
var ident = cubeutil.getIdentData(method);
669+
var ident = cubeutil.getIdentData(step);
674670
var data = rec.data;
675671
var sdata = data[ident[4]];
676672
if (!sdata) {
@@ -687,11 +683,11 @@ var caseStat = execMain(function() {
687683
tools.regTool('casestat', TOOLS_RECONS + '>' + 'cases', execFunc);
688684
}
689685
stats.regUtil('casestat', update);
690-
var methods = ['PLL', 'OLL'];
691-
for (var i = 0; i < methods.length; i++) {
692-
methodSelect.append('<option value="' + methods[i] + '">' + methods[i] + '</option>');
693-
stats.regExtraInfo('recons_cf4op_' + methods[i], calcCaseExtra.bind(null, methods[i]));
694-
}
686+
var steps = [['cf4op', 'PLL'], ['cf4op', 'OLL'], ['cf3zb', 'ZBLL']];
687+
steps.forEach((step) => {
688+
methodStepSelect.append(`<option value="${step[0]}_${step[1]}">${step[1]}</option>`);
689+
stats.regExtraInfo(`recons_${step[0]}_${step[1]}`, calcCaseExtra.bind(null, step[0], step[1]));
690+
});
695691
});
696692

697693
return {
@@ -906,7 +902,7 @@ var scatter = execMain(function() {
906902
}
907903
stats.regUtil('scatter', updateScatter);
908904
kernel.regListener('scatter', 'reqrec', reqRecons);
909-
var methods = [['cf4op', 'cfop'], ['roux', 'roux']];
905+
var methods = [['cf4op', 'cfop'], ['roux', 'roux'], ['cf3zb', 'cfzb']];
910906
for (var i = 0; i < methods.length; i++) {
911907
methodSelect.append('<option value="' + methods[i][0] + '">' + methods[i][1] + '</option>');
912908
}

src/js/tools/eoline.js

Lines changed: 4 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -46,31 +46,7 @@ execMain(function(createMove, edgeMove, createPrun, getPruning) {
4646
var moveIdx = ["FRUBLD", "RBULFD", "FLDBRU", "LBDRFU", "FDRBUL", "DBRUFL", "FULBDR", "UBLDFR", "URBDLF", "RDBLUF", "DRFULB", "RUFLDB"];
4747
var rotIdx = ["&nbsp;&nbsp;&nbsp;", "&nbsp;y&nbsp;", "z2&nbsp;", "z2y", "z'&nbsp;", "z'y", "&nbsp;z&nbsp;", "z&nbsp;y", "x'&nbsp;", "x'y", "&nbsp;x&nbsp;", "x&nbsp;y"];
4848

49-
function solve_eoline(scramble, fdiv) {
50-
init();
51-
var moves = cubeutil.parseScramble(scramble, "FRUBLD");
52-
fdiv.empty();
53-
for (var face = 0; face < 12; face++) {
54-
var flip = 0;
55-
var perm = 9 * 12 + 8;
56-
for (var i = 0; i < moves.length; i++) {
57-
var m = moveIdx[face].indexOf("FRUBLD".charAt(moves[i][0]));
58-
var p = moves[i][2];
59-
for (var j = 0; j < p; j++) {
60-
flip = fmv[m][flip];
61-
perm = pmv[m][perm];
62-
}
63-
}
64-
var sol = solv.search([flip, perm], 0);
65-
for (var i = 0; i < sol.length; i++) {
66-
sol[i] = "FRUBLD".charAt(sol[i][0]) + " 2'".charAt(sol[i][1]);
67-
}
68-
69-
fdiv.append($('<span class="sol">').append(faceStr[face] + ": " + rotIdx[face], tools.getSolutionSpan(sol)), '<br>');
70-
}
71-
}
72-
73-
function solve_eocross(scramble, fdiv) {
49+
function solveEOLine(scramble, isCross, fdiv) {
7450
init();
7551
var moves = cubeutil.parseScramble(scramble, "FRUBLD");
7652
fdiv.empty();
@@ -87,11 +63,8 @@ execMain(function(createMove, edgeMove, createPrun, getPruning) {
8763
perm2 = pmv[m][perm2];
8864
}
8965
}
90-
var sol = solv2.search([flip, perm1, perm2], 0);
91-
for (var i = 0; i < sol.length; i++) {
92-
sol[i] = "FRUBLD".charAt(sol[i][0]) + " 2'".charAt(sol[i][1]);
93-
}
94-
66+
var sol = isCross ? solv2.search([flip, perm1, perm2], 0) : solv.search([flip, perm1], 0);
67+
sol = sol.map((move) => "FRUBLD".charAt(move[0]) + " 2'".charAt(move[1]));
9568
fdiv.append($('<span class="sol">').append(faceStr[face] + ": " + rotIdx[face], tools.getSolutionSpan(sol)), '<br>');
9669
}
9770
}
@@ -102,11 +75,7 @@ execMain(function(createMove, edgeMove, createPrun, getPruning) {
10275
}
10376
if (tools.isPuzzle('333')) {
10477
var scramble = tools.getCurScramble();
105-
if (type == 'eocross') {
106-
solve_eocross(scramble[1], fdiv);
107-
} else {
108-
solve_eoline(scramble[1], fdiv);
109-
}
78+
solveEOLine(scramble[1], type == 'eocross', fdiv);
11079
} else {
11180
fdiv.html(IMAGE_UNAVAILABLE);
11281
}
@@ -116,8 +85,4 @@ execMain(function(createMove, edgeMove, createPrun, getPruning) {
11685
tools.regTool('eoline', TOOLS_SOLVERS + '>' + TOOLS_EOLINE, execFunc.bind(null, 'eoline'));
11786
tools.regTool('eocross', TOOLS_SOLVERS + '>' + 'EOCross', execFunc.bind(null, 'eocross'));
11887
});
119-
120-
return {
121-
solve: solve_eoline
122-
}
12388
}, [mathlib.createMove, mathlib.edgeMove, mathlib.createPrun, mathlib.getPruning]);

0 commit comments

Comments
 (0)