Exemplo n.º 1
0
 /**
  * Computes all the additional fields; is done after the initial search to optimize finding
  * doubles.
  *
  * @param finder
  */
 public void computeFields(SudokuStepFinder finder) {
   this.buddies = new SudokuSet();
   for (int i = 1; i <= 9; i++) {
     if ((candidates & Sudoku2.MASKS[i]) != 0) {
       SudokuSet sudokuCandidates = finder.getCandidates()[i];
       indicesPerCandidat[i] = new SudokuSet(indices);
       indicesPerCandidat[i].and(sudokuCandidates);
       buddiesPerCandidat[i] = new SudokuSet();
       Sudoku2.getBuddies(indicesPerCandidat[i], buddiesPerCandidat[i]);
       buddiesPerCandidat[i].andNot(indices);
       buddiesPerCandidat[i].and(finder.getCandidates()[i]);
       buddiesAlsPerCandidat[i] = new SudokuSet(buddiesPerCandidat[i]);
       buddiesAlsPerCandidat[i].or(indicesPerCandidat[i]);
       buddies.or(buddiesPerCandidat[i]);
     }
   }
 }