MCPcopy Create free account
hub / github.com/MeigenChou/DCTimer-Android / search3

Method search3

app/src/main/java/cs/threephase/Search.java:413–453  ·  view source on GitHub ↗
(int edge, int ct, int prun, int maxl, int lm, int depth)

Source from the content-addressed store, hash-verified

411 }
412
413 public boolean search3(int edge, int ct, int prun, int maxl, int lm, int depth) {
414 if (maxl == 0) {
415 return edge == 0 && ct == 0;
416 }
417 tempe[depth].set(edge);
418 for (int m=0; m<17; m++) {
419 if (ckmv3[lm][m]) {
420 m = skipAxis3[m];
421 continue;
422 }
423 int ctx = Center3.ctmove[ct][m];
424 int prun1 = Center3.prun[ctx];
425 if (prun1 >= maxl) {
426 if (prun1 > maxl && m < 14) {
427 m = skipAxis3[m];
428 }
429 continue;
430 }
431 int edgex = Edge3.getmvrot(tempe[depth].edge, m<<3, 10);
432
433 int cord1x = edgex / Edge3.N_RAW;
434 int symcord1x = Edge3.raw2sym[cord1x];
435 int symx = symcord1x & 0x7;
436 symcord1x >>= 3;
437 int cord2x = Edge3.getmvrot(tempe[depth].edge, m<<3|symx, 10) % Edge3.N_RAW;
438
439 int prunx = Edge3.getprun(symcord1x * Edge3.N_RAW + cord2x, prun);
440 if (prunx >= maxl) {
441 if (prunx > maxl && m < 14) {
442 m = skipAxis3[m];
443 }
444 continue;
445 }
446
447 if (search3(edgex, ctx, prunx, maxl - 1, m, depth + 1)) {
448 move3[depth] = m;
449 return true;
450 }
451 }
452 return false;
453 }
454}

Callers 1

searchMethod · 0.95

Calls 3

getmvrotMethod · 0.95
getprunMethod · 0.95
setMethod · 0.45

Tested by

no test coverage detected