private bool CanMoveUp(GridColumn column) { // No cells -> No movements if (column.All(cell => cell.IsEmpty())) { return(false); } // Cells + empty space (except last cell) -> Movement possible else if (column.Take(3).Any(cell => cell.IsEmpty())) { return(true); } else { // Check for any consecutive cells for (int row = 0; row <= 2; row++) { if (column[row] == column[row + 1]) { return(true); } } return(false); } }