addClues method

void addClues(
  1. int hintOffset
)

Implementation

void addClues(int hintOffset) {
  if (initialState.equals(currentState)) {
    if (hintOffset >= 0 && hintOffset <= 64) {
      var random = Random();
      var pos1;
      var pos2;
      var initialBoard = initialState.board;
      var finalBoard = finalState.board;
      for (var i = 0; i < hintOffset; i++) {
        do {
          pos1 = random.nextInt(boardSize);
          pos2 = random.nextInt(boardSize);
        } while (initialBoard[pos1][pos2] != 0);
        initialBoard[pos1][pos2] = finalBoard[pos1][pos2];
      }

      initialState = SudokuState(initialBoard);
      currentState = initialState;
    } else {
      throw ArgumentError('Hint offset not in inclusive range 0..64');
    }
  } else {
    throw Exception(
        'This method should only be used on an unplayed problem to increase the initial hints.');
  }
}