private void EliminateNakedPairFromOthersInBlock(int[,] sudokuMatrix, int givenRow, int givenCol) { if (!HasNakedPairInBlock(sudokuMatrix, givenRow, givenCol)) { return; } var sudokuMap = _sudokuMapper.Find(givenRow, givenCol); for (int row = sudokuMap.StartRow; row < sudokuMap.StartRow + 2; row++) { for (int col = sudokuMap.StartCol; col < sudokuMap.StartCol + 2; col++) { if (sudokuMatrix[row, col] != sudokuMatrix[givenRow, givenCol] && sudokuMatrix[row, col].ToString().Length > 1) { EliminateNakedPair(sudokuMatrix, sudokuMatrix[givenRow, givenCol], row, col); } } } }
private void EliminateNakedPairInBlock(int[,] board, int givenRow, int givenCol) { if (!hasNakedPairInBlock(board, givenRow, givenCol)) { return; } var sudokuMap = _sudokuMapper.Find(givenRow, givenCol); for (int row = sudokuMap.StartRow; row <= sudokuMap.StartRow + 2; row++) { for (int col = sudokuMap.StartCol; col <= sudokuMap.StartCol + 2; col++) { if (board[row, col].ToString().Length > 1 && board[row, col] != board[givenRow, givenCol]) { EliminateNakedPair(board, board[givenRow, givenCol], row, col); } } } }
private void RemoveNakedPairFromBlock(int[,] sudokuBoard, int rowIndex, int colIndex) { if (!HasNakedPairInBlock(sudokuBoard, rowIndex, colIndex)) { return; } var sudokuMap = _sudokuMapper.Find(rowIndex, colIndex); for (int i = sudokuMap.StartRow; i <= sudokuMap.StartRow + 2; i++) { for (int j = sudokuMap.StartColumn; j <= sudokuMap.StartColumn + 2; j++) { if (sudokuBoard[i, j].ToString().Length > 1 && sudokuBoard[i, j] != sudokuBoard[rowIndex, colIndex]) { RemoveNakedPair(sudokuBoard, sudokuBoard[rowIndex, colIndex], i, j); } } } }
private object GetPossibilitiesInBlock(int[,] sudokuBoard, int givenRow, int givenCol) { int[] possibilities = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; var sudokuMap = _sudokuMapper.Find(givenRow, givenCol); for (int row = sudokuMap.StartRow; row <= sudokuMap.StartRow + 2; row++) { for (int col = sudokuMap.StartCol; col <= sudokuMap.StartCol + 2; col++) { if (IsValidSingle(sudokuBoard[row, givenCol])) { possibilities[sudokuBoard[row, givenCol] - 1] = 0; } } } return(Convert.ToInt32(String.Join(string.Empty, possibilities.Select(p => p).Where(p => p != 0)))); }
private int GetPossibilityInBlock(int[,] sudokuBoard, int rowIndex, int colIndex) { int[] possibilities = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; var sudokuMap = _sudokuMapper.Find(rowIndex, colIndex); for (int i = sudokuMap.StartRow; i < sudokuMap.StartRow + 2; i++) { for (int j = sudokuMap.StartColumn; j < sudokuMap.StartColumn + 2; j++) { if (IsValidSingle(sudokuBoard[i, j])) { possibilities[sudokuBoard[i, j] - 1] = 0; } } } return(Convert.ToInt32(String.Join(string.Empty, possibilities.Select(p => p).Where(p => p != 0)))); }
public int GetPotentialsBlock(int[,] board, int givenRow, int givenCol) { int[] potentials = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; var sudokuMap = _sudokuMapper.Find(givenRow, givenCol); for (int row = sudokuMap.StartRow; row <= sudokuMap.StartRow + 2; row++) { for (int col = sudokuMap.StartCol; col <= sudokuMap.StartCol + 2; col++) { if (isValidSingle(board[row, col])) { potentials[board[row, col] - 1] = 0; } } } return(Convert.ToInt32(String.Join(string.Empty, potentials.Select(p => p).Where(p => p != 0)))); }