public int ScoreSolved(CubeInfo.Cubie cubie, List <CubeInfo.Cubie> constraints) { bool requirements = _cubies.IsSolved(cubie); for (int i = 0; i < constraints.Count && requirements; i++) { CubeInfo.Cubie info = constraints[i] as CubeInfo.Cubie; if (!_cubies.IsSolved(info)) { requirements = false; } } if (!requirements) { return(0); } int score = 0; for (int i = 0; i < _cubies.GetNumCubes(); i++) { CubeInfo.Cubie info = _cubies.GetCubeInfo(i); if (_cubies.CorrectPos(info)) { score++; } if (_cubies.CorrectOri(info)) { score++; } } return(score); }