verify method
Verifies if the Cube has invalid facelet positions.
Implementation
CubeStatus verify() {
final ec = List<int>.filled(edgeCount, 0);
final cc = List<int>.filled(cornerCount, 0);
for (var e = 0; e < edgeCount; e++) {
ec[_ep[e].index]++;
}
for (var i = 0; i < edgeCount; i++) {
// missing edges
if (ec[i] != 1) {
return CubeStatus.missingEdge;
}
}
var sum = 0;
for (var i = 0; i < edgeCount; i++) {
sum += _eo[i];
}
if (sum % 2 != 0) {
return CubeStatus.twistedEdge;
}
for (var c = 0; c < cornerCount; c++) {
cc[_cp[c].index]++;
}
for (var i = 0; i < cornerCount; i++) {
if (cc[i] != 1) {
return CubeStatus.missingCorner;
}
}
sum = 0;
for (var i = 0; i < cornerCount; i++) {
sum += _co[i];
}
if (sum % 3 != 0) {
return CubeStatus.twistedCorner;
}
// parity error
if ((computeEdgeParity() ^ computeCornerParity()) != 0) {
return CubeStatus.parityError;
}
// cube ok
return CubeStatus.ok;
}