Problem Statement
In a coloring of the board, each cell on the board is colored white or black. A coloring is called rectangle-avoiding if it is impossible to choose 4 distinct cells of the same color so that their centers form a rectangle whose sides are parallel to the sides of the board. In other words, a coloring is rectangle-avoiding if, for each a, b, c, and d with 0 <= a < b < N, 0 <= c < d < M, there is at least one white cell and at least one black cell among the cells (a, c), (a, d), (b, c) and (b, d).
You are given a
Definition
- Class:
- RectangleAvoidingColoringEasy
- Method:
- count
- Parameters:
- String[]
- Returns:
- int
- Method signature:
- int count(String[] board)
- (be sure your method is public)
Notes
- Two colorings are different if there is a cell on the board that is colored white in one coloring and black in the other coloring.
- The answer will always fit into a 32-bit signed integer data type.
Constraints
- board will contain between 1 and 10 elements, inclusive.
- Each element of board will contain between 1 and 10 characters, inclusive.
- All elements of board will contain the same number of characters.
- Each character in each element of board will be 'W', 'B' or '?'.
Examples
{"??", "??"}
Returns: 14
Since each cell can be black or white, there are 2^4 = 16 ways to color this board. Of them, only 2 monochromatic colorings are not rectangle-avoiding, so the answer is 16 - 2 = 14.
{"B?", "?B"}
Returns: 3
It is the same board as in previous example, but colors for some cells are already predefined. There are 4 ways to color the remaining cells and in one of them the board becomes completely black. Therefore the answer is 4 - 1 = 3.
{"WW", "WW"}
Returns: 0
This board is already colored and the coloring is not rectangle-avoiding.
{"??B??", "W???W", "??B??"}
Returns: 12
{"?"}
Returns: 2
{"B"}
Returns: 1
{"W"}
Returns: 1
{"??"}
Returns: 4
{"BB"}
Returns: 1
{"BB"}
Returns: 1
{"???"}
Returns: 8
{"W?BWBWBBB"}
Returns: 2
{"WW?W?B?"}
Returns: 8
{"??????????"}
Returns: 1024
{"BWBWBWWBWW"}
Returns: 1
{"WWB?BW?WB?"}
Returns: 8
{"?","?"}
Returns: 4
{"B","B"}
Returns: 1
{"W","?"}
Returns: 2
{"?","?","?"}
Returns: 8
{"B","B","W","W"}
Returns: 1
{"B","B","B"}
Returns: 1
{"???????","???????","???????","???????","???????","???????","???????","???????","???????","???????"}
Returns: 0
{"?","?","?","?","?","?","?","?","?","?"}
Returns: 1024
{"??","??"}
Returns: 14
{"?B","?W"}
Returns: 4
{"??","W?"}
Returns: 7
{"???","???"}
Returns: 44
{"BBBBWBB","BWBWBBW"}
Returns: 0
{"WW?BWWWBW","B?BB?B?WB"}
Returns: 4
{"??","??","??"}
Returns: 44
{"??","BB","BW","WB","WB"}
Returns: 3
{"W?","?W","?W","?W","B?","??","?W","??","??"}
Returns: 204
{"??????????","??????????"}
Returns: 34304
{"W??BWB?WW?","???B???WB?"}
Returns: 16
{"WBWWBBBWBB","B?BBBWWB?W"}
Returns: 1
{"??","??","??","??","??","??","??","??","??","??"}
Returns: 34304
{"?W","WB","BB","?B","?W","BW","WW","WB","BW","BB"}
Returns: 0
{"B?","B?","BW","WB","??","BB","BW","??","W?","BW"}
Returns: 12
{"???","???","???"}
Returns: 156
{"WWW","W??","???"}
Returns: 2
{"?WB","W?W","?W?"}
Returns: 4
{"????","????","????"}
Returns: 408
{"B?BW","?BB?","B??B"}
Returns: 3
{"?W??","??W?","?WB?"}
Returns: 28
{"???","???","???","???"}
Returns: 408
{"WB?","?W?","?WW","BWB"}
Returns: 2
{"???","?B?","?BB","??B"}
Returns: 14
{"?????","?????","?????"}
Returns: 720
{"WW?BB","WWWW?","BBWWW"}
Returns: 0
{"B?WB?","??BBB","??W?B"}
Returns: 4
{"???","???","???","???","???"}
Returns: 720
{"??B","BBB","B?W","?WB","W?B"}
Returns: 0
{"B??","?BW","W??","WW?","WB?"}
Returns: 4
{"???????","???????","???????"}
Returns: 0
{"?B?WW??","BW?B??W","????B?B"}
Returns: 0
{"???","???","???","???","???","???","???","???","???"}
Returns: 0
{"WWB","BBB","BWB","WWB","BBB","WBB"}
Returns: 0
{"??????????","??????????","??????????"}
Returns: 0
{"BBWBB?BBWB","BWWBWBWW?W","WWWWBBWWB?"}
Returns: 0
{"???","???","???","???","???","???","???","???","???","???"}
Returns: 0
{"WBW","WWW","W?W","WW?","WWW","WWW","W?W","WWW","BWW","WBW"}
Returns: 0
{"????","????","????","????"}
Returns: 840
{"W?W?","W?WW","W?W?","BBWW"}
Returns: 0
{"B?BW","W???","WBWW","BW??"}
Returns: 3
{"?????","?????","?????","?????"}
Returns: 720
{"WB?WB","?WBBB","?W?B?","BBB?W"}
Returns: 1
{"B????","B???W","???B?","?????"}
Returns: 42
{"????","????","????","????","????"}
Returns: 720
{"?BBB","B?BB","BBBB","BWBB","B?BB"}
Returns: 0
{"W???","?B?W","?B??","???W","?W??"}
Returns: 14
{"????????","????????","????????","????????"}
Returns: 0
{"WWBWW?BB","WB???WBB","BW??BBBW","BBWWWWBB"}
Returns: 0
{"????","????","????","????","????","????","????","????","????"}
Returns: 0
{"WBBB","BBBB","W?BB","WBBB","WW?B","B?WB"}
Returns: 0
{"??????????","??????????","??????????","??????????"}
Returns: 0
{"BW???W?BBB","?WBW????B?","W??????BB?","W?WBB?B?BW"}
Returns: 0
{"????","????","????","????","????","????","????","????","????","????"}
Returns: 0
{"BB??","?W?B","BB??","?BB?","?B??","BWBB","WW??","WBB?","??WB","?W??"}
Returns: 0
{"????????","????????","????????","????????","????????","????????","????????"}
Returns: 0
{"WBWWWBWWB","WWWWWBW?W","B?WW?W?W?","WWB?WWWW?","WWBWWWWBW","BWWW?WWWB","B??WBWW?W","BBB??WWWB","WWWWWBWWB"}
Returns: 0
{"????????","????????","????????","????????","????????","????????","????????","????????"}
Returns: 0
{"??B?B????","??BBB?W??","????B??B?","?BBBWBW?B","WB?BB???B","BW?BB??WW","?W??B?WW?"}
Returns: 0
{"??????????","??????????","??????????","??????????","??????????","??????????","??????????","??????????","??????????"}
Returns: 0
{"WBBWWBBBWW","?BB?BBBWWB","BBBBBBBWWB","WWBBBBBWWW","?BWW?BWBWW","WWWB?WWB?B","BBBBB?BWBB"}
Returns: 0
{"???????","???????","???????","???????","???????","???????","???????","???????","???????","???????"}
Returns: 0
{"WWWWWW","WWWWWW","WWWWWW","WWWWWW","WWWWWW","WWWWWW","?WWWWW","WWWWWW","WWWWWW","WWWWWW"}
Returns: 0
{"??????????","??????????","??????????","??????????","??????????","??????????","??????????","??????????","??????????","??????????"}
Returns: 0
{"?BBBWWWBWW","W??BB??WWW","?W?BWB?WBB","WW?WW?BWWW","WB?WBBBBBW","?WBW?BWWWW","WWWBWBBBBB","WWWBWB?WWB","WBBBWWBWB?","BWWWBWBWWW"}
Returns: 0
{"???B??????"}
Returns: 512
{"???????B??"}
Returns: 512
{"?B????????"}
Returns: 512
{"??????????","W?????????"}
Returns: 17152
{"?????W????","?B????????"}
Returns: 8704
{"W?????????","W?????????"}
Returns: 2816
{"????B","?????","??W??"}
Returns: 168
{"?B???","?B???","?????"}
Returns: 120
{"W????","?????","????W"}
Returns: 192
{"?????","??B??","????W","?????"}
Returns: 168
{"W????","?????","W????","?????"}
Returns: 120
{"???B?","?????","????B","?????"}
Returns: 192
{"B","?","?","?","?","?","?","?","?","?"}
Returns: 512
{"?","?","?","?","?","W","?","?","W","?"}
Returns: 256
{"W","?","?","?","?","?","?","W","?","?"}
Returns: 256
{"??","??","?B","??","??","??","??","??","??","??"}
Returns: 17152
{"??","??","??","B?","??","??","??","??","B?","??"}
Returns: 8448
{"??","B?","??","??","??","??","W?","??","??","??"}
Returns: 8704
{"???","???","???","W??","?W?"}
Returns: 192
{"???","???","?W?","???","???"}
Returns: 360
{"??W","???","???","???","???"}
Returns: 360
{"????","????","????","?W??","????"}
Returns: 360
{"???B","????","???B","????","????"}
Returns: 144
{"????","W???","????","B???","????"}
Returns: 216
{"??????????","??????????","???????B??","??????????","??????????","??????????","??????????","??????????","??????????","??????????"}
Returns: 0
{"??????B???","??????????","?????????W","??????????","??????????","??????????","??????????","??????????","??????????","??????????"}
Returns: 0
{"??????????","??????????","??????????","??????????","??????????","??????????","??????????","?????W????","??????????","????????W?"}
Returns: 0
{"??????","???B??","???W??","??????","??????","??????","??????"}
Returns: 0
{"?W?????"}
Returns: 64
{"???","???","???","???","???","???","??B","???","???"}
Returns: 0
{"????????B?"}
Returns: 512
{"???????W","????????","????????","????????","????????","W???????"}
Returns: 0
{"W","?","?","?","?","W"}
Returns: 16
{"?????","?????","W??B?","?????"}
Returns: 216
{"???","???","???","???","???","???","???","???","???","?W?"}
Returns: 0
{"??????","?W????","??????"}
Returns: 360
{"?B?????W"}
Returns: 64
{"?B????","??????","??????","??????","??????","??????"}
Returns: 0
{"??????","??????","W?????"}
Returns: 360
{"???????","???????","???????","???????","???????","????B??","???????"}
Returns: 0
{"??????","??????","??????"}
Returns: 720
{"WBW??B","??????","?WW???"}
Returns: 16
{"????WW","WW??W?","???W??"}
Returns: 6
{"??????","??????","??????","??????"}
Returns: 720
{"?WB???","?B?W??","??BWBW","?WW???"}
Returns: 2
{"????BB","??????","??????","?B????"}
Returns: 84
{"???","???","???","???","???","???"}
Returns: 720
{"BW?","?W?","?BB","W??","?WW","???"}
Returns: 1
{"?W?","??B","B?W","???","?W?","?W?"}
Returns: 6
{"????","????","????","????","????","????"}
Returns: 720
{"?B?B","?WBB","??BW","?WB?","?W?W","B?WB"}
Returns: 0
{"W???","?B??","W??W","??W?","B???","B??B"}
Returns: 2
{"??????","??????","????B?"}
Returns: 360
{"??????","W?????","??????"}
Returns: 360
{"????W?","????B?","??????"}
Returns: 240
{"?BW???","??????","??????","??????"}
Returns: 216
{"??B???","?????B","??????","??????"}
Returns: 192
{"??????","??????","???W?W","??????"}
Returns: 144
{"???","B??","???","???","???","???"}
Returns: 360
{"???","??W","???","???","???","???"}
Returns: 360
{"???","???","??B","???","???","???"}
Returns: 360
{"????","B???","????","????","????","????"}
Returns: 360
{"????","????","????","????","????","W???"}
Returns: 360
{"B???","????","????","????","?B??","????"}
Returns: 192
{"?????","?????","?????","?????","?????"}
Returns: 0
{"W???W","WB?WB","??B??","WWW??","W??WW"}
Returns: 0
{"??????","??????","??????","??????","??????"}
Returns: 0
{"W?WWBBW?B","BW?W?BWB?","BBBBBBWBW","BBWWBWBWW","WWBWWBWBW"}
Returns: 0
{"?????","?????","?????","?????","?????","?????"}
Returns: 0
{"BWWBB","BWBBB","WBWWW","BWBWW","WBWB?","BWBWB","BBBBB"}
Returns: 0
{"??????????","??????????","??????????","??????????","??????????"}
Returns: 0
{"BBBBB??WBB","BB??BBBBBW","WWBBBBBWBB","BW?WB?BB?W","B?BWBW?BBB"}
Returns: 0
{"?????","?????","?????","?????","?????","?????","?????","?????","?????","?????"}
Returns: 0
{"??W?W","W?BWW","?WW?W","???W?","???WW","???W?","W?WWW","WW?WW","WW??W","???BW"}
Returns: 0
{"B???????W?", "??????????", "??????????", "??????????", "??????????", "??????????", "??????????", "?????B????", "??????W???", "??????????" }
Returns: 0
{"WB??B?????", "WB??B?????", "WB??B?????", "WB??B???BB", "WB??B?????", "WB??B?WW??", "WB??B?????", "WB??B??B??", "WB??B?????", "WB??B?W???" }
Returns: 0
{"??????????", "??????????", "??????????", "??????????", "??????????", "??????????", "??????????", "??????????", "??????????", "??????????" }
Returns: 0
{"??B??", "W???W", "??B??" }
Returns: 12
{"W???B", "?W??B", "W????", "??B?W" }
Returns: 8