public int GetBlockHeight() { if (_board != null) { return(_board.GetBlockHeight()); } else { throw new GameNotStartedException(); } }
private bool SearchColumnForValuesThatOnlyFitInOneBlock(int column) { List <int> possibleValuesInColumnInBlock; bool changes = false; for (int i = 0; i != _board.GetBoardSize(); i += _board.GetBlockHeight()) { possibleValuesInColumnInBlock = GetPossibleValuesInSectionInBlock(_board.GetColumnCells(column), i, _board.GetBlockHeight()); foreach (int value in possibleValuesInColumnInBlock) { //Sjekker om det finnes verdier i kolonnen som bare kan puttes i den gitte blokken, og fjerner eventuelt verdiene i blokken som ikke ligger på samme kolonne bool uniqueValue = CheckIfPossibleValueOnlyExistsInBlockInSelection(_board.GetColumnCells(column), value, i, _board.GetBlockWidth()); if (uniqueValue == true) { for (int j = 0; j != _board.GetBoardSize(); j++) { if ((column != GetColumnFromBlockPosition(column, j)) && (possibleValues[GetRowFromBlockPosition(i, j), GetColumnFromBlockPosition(column, j)].Contains(value) == true)) { possibleValues[GetRowFromBlockPosition(i, j), GetColumnFromBlockPosition(column, j)].Remove(value); changes = true; } } } //Sjekker om det finnes verdier i blokken som bare kan puttes i den gitte kolonnen, og fjerner eventuelt verdiene i kolonnen som ikke ligger i samme blokk uniqueValue = CheckIfPossibleValueOnlyExistsInColumnInBlock(_board.GetBlockCells(i, column), value, _board.GetBlockHeight(), column); if (uniqueValue == true) { for (int j = 0; j != _board.GetBoardSize(); j++) { if (((j < i) || (j >= (i + _board.GetBlockWidth()))) && (possibleValues[j, column].Contains(value) == true)) { possibleValues[j, column].Remove(value); changes = true; } } } } } return(changes); }