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

Method createPrun

app/src/main/java/cs/threephase/Edge3.java:74–160  ·  view source on GitHub ↗
(Handler handler)

Source from the content-addressed store, hash-verified

72 }
73
74 public static void createPrun(Handler handler) {
75 Edge3 e = new Edge3();
76 Edge3 f = new Edge3();
77 Edge3 g = new Edge3();
78
79 Arrays.fill(eprun, -1);
80 int depth = 0;
81 int done = 1;
82 setPruning(eprun, 0, 0);
83
84 while (done != N_EPRUN) {
85 boolean inv = depth > 9;
86 int depm3 = depth % 3;
87 int dep1m3 = (depth + 1) % 3;
88 int find = inv ? 0x3 : depm3;
89 int chk = inv ? depm3 : 0x3;
90
91 if (depth >= MAX_DEPTH - 1) {
92 break;
93 }
94
95 for (int i_=0; i_<N_EPRUN; i_+=16) {
96 int val = eprun[i_ >> 4];
97 if (!inv && val == -1) {
98 continue;
99 }
100 for (int i=i_, end=i_+16; i<end; i++, val>>=2) {
101 if ((val & 3) != find) {
102 continue;
103 }
104 int symcord1 = i / N_RAW;
105 int cord1 = sym2raw[symcord1];
106 int cord2 = i % N_RAW;
107 e.set(cord1 * N_RAW + cord2);
108
109 for (int m=0; m<17; m++) {
110 int cord1x = getmvrot(e.edge, m<<3, 4);
111 int symcord1x = raw2sym[cord1x];
112 int symx = symcord1x & 0x7;
113 symcord1x >>= 3;
114 int cord2x = getmvrot(e.edge, m<<3|symx, 10) % N_RAW;
115 int idx = symcord1x * N_RAW + cord2x;
116 if (getPruning(eprun, idx) != chk) {
117 continue;
118 }
119 setPruning(eprun, inv ? i : idx, dep1m3);
120 done++;
121 if ((done % 448090) == 179236) {
122 Message msg = new Message();
123 msg.what = 25;
124 msg.obj = done;
125 handler.sendMessage(msg);
126 }
127 if (inv) {
128 break;
129 }
130 char symState = symstate[symcord1x];
131 if (symState == 1) {

Callers 1

initMethod · 0.95

Calls 7

setPruningMethod · 0.95
setMethod · 0.95
getmvrotMethod · 0.95
getPruningMethod · 0.95
moveMethod · 0.95
rotateMethod · 0.95
getMethod · 0.95

Tested by

no test coverage detected