Problem Statement
Some of the cells of the chessboard are occupied by chess pieces. You are given a
John and Brus also have an infinite supply of L-shaped tiles. Each tile consists of three squares which are of the same size as the cells of the chessboard. I.e., each tile looks as follows:
OO OJohn and Brus want to place some of the tiles onto their chessboard, according to the following rules:
- Each tile may be rotated by any multiple of 90 degrees.
- Each tile must cover exactly three cells of the chessboard.
- Tiles are not allowed to overlap.
- Tiles are not allowed to cover the cells that are already occupied by the chess pieces.
- The corner cell of each tile must cover a black cell of the chessboard.
Return the maximum number of tiles John and Brus can place on the board according to the above rules.
Definition
- Class:
- TheTilesDivTwo
- Method:
- find
- Parameters:
- String[]
- Returns:
- int
- Method signature:
- int find(String[] board)
- (be sure your method is public)
Constraints
- board will contain between 1 and 4 elements, inclusive.
- Each element of board will contain between 1 and 47 characters, inclusive.
- All elements of board will contain the same number of characters.
- Each element of board will consist of only characters 'X' and '.'.
Examples
{"X.X", "...", "X.X"}
Returns: 1
Since only one black cell is available, just one tile can be placed on the board.
{"...", "...", "..."}
Returns: 2
{"......X.X.XXX.X.XX."}
Returns: 0
{"X.....XXX.XX..XXXXXXXXX...X.XX.XX....X", ".XXXX..X..XXXXXXXX....XX.X.X.X.....XXX", "....XX....X.XX..X.X...XX.X..XXXXXXX..X", "XX.XXXXX.X.X..X..XX.XXX..XX...XXX.X..."}
Returns: 13
{"XX..XXXXXXXXX.XXX.XXX...", "...X.XXXXXX.X..X...XX.XX", "X.X.X.X..X.X.XX.X.X...X.", "..X.XXXX..XXX...XX....X."}
Returns: 8
{"...", "XX.", "..X"}
Returns: 1
{".", "X"}
Returns: 0
{"..X.XX.X.XX..XXXXXXXX.XX.XX...X..X.XX.XX.X.X.X.", "....X.XX...XXXXX.X.XX.X.X.XXXXXX..XX......XX.X.", ".......X.XX.X...XX.X.XX..XX..X...X.......XXXXX.", ".....X.XXXXX.X.XXXXXXXX...XX....XX....XX.XX.XXX"}
Returns: 14
{".X.XX..XXX.X.", "X.XXX.X..XXXX"}
Returns: 0
{"..XX.XXXXX..X...XX.X.XX..XX.X.X....", ".XX..X..XX.XX.XX.XXX.XX.X..XXXX.X.X", "XX.XX...XXXX...X..X....XXXXX..XXX.X", "..XXX..X........X.........XXXX.X.XX"}
Returns: 8
{".X...X.X.X.X...X...X.......X.X.X.X.....X...", "X...X.........X.X.X...............X.X...X..", "...X.......X...X.....X...X...X.X.....X...X.", "X.X.X.X...X...X.....X.X...............X...X"}
Returns: 18
{".X.X.X.......X.X.X...X.......X.X..........", "X.......X.X.X...X...X...X.......X.X.X.....", ".X.X.X.X.X.X.X.X.X.....X.....X.....X.X...X", "X...X.X...X.X.X.X.X.X.X...X.X.X...X.X.X.X."}
Returns: 10
{"...X.....X...X.X.X.....X...X...X.X...X.X.X.X..", "X...X.X.X.X.X.X.....X.X...X.......X.X.X...X...", "...X...X...................X.X.X.X.X...X......", "......X.X.X...X.....X.X.............X.X.X.X..."}
Returns: 15
{".............X.............X.X.....X.....X...", "X.X.....X.X.....X.......X.X...X.X.X.X.X.X.X..", ".X...X.X.................X.X...........X.X...", "X.X.X.X.....X.X.....X.....X.....X.X.X.....X.."}
Returns: 18
{".X.....X.X...X.X.X.....X.....X.......X...X.X", "X.X.........X.X...X.X...X.......X.X.X.X...X.", ".X...X...X.............X.....X.X.....X...X..", "........X...X.X.X.X.X.X.X...X.X.X...X.X.X.X."}
Returns: 14
{".X...X.X.X...X.X.X.X.....X...X.X.X.......", "....X.....X.....X.....X.....X.....X.X.X..", ".X.X.......X...X...X.X.X.X.X...X.....X.X.", "..X.....X.X...X.X.X...X.X...X.X...X.X.X.X"}
Returns: 13
{".X...X.X.X.X.X...X.............X.X.X...X.X.X.X", "......X.X.X.X...X.X...X...X.....X.X...X.X.X.X.", ".X.X.X.......X...X.X...X.X...........X.....X..", "X.X.X.........X.X...X...X.X...X...X...X.X...X."}
Returns: 15
{".X.X.X.X.X.X.X.X...X.X.X...X...X.X...X.....X", "X...X.....X...............X.X.......X...X...", "...X...X...X.X...X...X.X...X.......X.X.X.X..", "X.X...X.X...X.X.....X...X.X.X.X.X.X.X...X..."}
Returns: 13
{"...X.X.X.....X...X...X.X...X.X.X.X.....X..", "....X.X...X...X.X.X.......X.X.X.....X.X.X.", "...X...X.....X...X.....X...X.....X.....X..", "..X.....X.X.X.X.......X.X.....X.......X.X."}
Returns: 16
{".X.....X.X...X.......X.X.........X.X.....X.X.X", "..X...X.X.X...X.X.....X...X.....X.X.X...X.....", ".X.......X.X...X.X...............X.....X.X.X..", "..X.X.X.X...X.....X...X.X.X.X.X...X.X...X.X..."}
Returns: 13
{"...............................................", "...............................................", "...............................................", "..............................................."}
Returns: 46
{"..............................................", "..............................................", "..............................................", ".............................................."}
Returns: 46
{"XX...X.X.XXX..XX..XX.....X.X.X.XXX.X...X...XX.", "X.X.X.X.X.......X.X.X...X...X.XXXX..X.X...X.X.", "...X.X...X.X...XX.XX...X.X..X..X...XXXXX.X.X..", "X....X..X.XX.XX.X.X.X.....X.XX..X.X.XX...XX.X."}
Returns: 10
{".X.X.X..XX.......X.X...........X.X...XX...XX.", ".XX..X............XXX.......X.XXX.X.X.XXX.XXX", "X....X.....X....XX.X...X.X..X..X...XX...X..X.", "....XXX.....X...X.X...X.X.X..X.XX...X.X.X...."}
Returns: 18
{"X..X..XX.X.X.X.X.X.XX.X..X.XXX...XX..X...X.X...", "....X.....X.XXX.X.X.X.X.X...X...X...X.X.......X", "XX.X.X.XXX..XX..X.X..X.X..X..X...XX..X.X.XX...."}
Returns: 8
{"..X.X..X.X.X.X...XX....X...X.X.X...X.......X", "X.X.X..X..X.....XX..X.X....XX.X...X.XXXX....", ".....X.XXXXXX..X......X...XXX..X.........X..", "..XXX...........X.X...XXXXXXX.....XXXX....XX"}
Returns: 15
{".XXX.X..X.........XX.X.....X........X...XX..", "..XX....X..XX...XX.XXXXX.XX...X.X...XX..XX.X", "..XX.......X.XXX.X..XX.XXX...X..XX.X...X.X.X", "..XX.XX.X.X..X.XX...XX....X.X.....X.X..XXX.."}
Returns: 13
{".X...X.XXX...X.X.X.X.X.X....XX.X.X.X...XXX.X..", "..X..XX.X.X......XXX..X.X...X.....XXX..XXX....", "XX...XX.XXXX...XX..X.X.X...X.X.XXX.....X....XX"}
Returns: 7
{".X.XX..X...X.XX..X...XX.X....XXX.XX....X.XXXX", "X.X.X.X..X.XX..X....XX....X.X.X.X...X.X......", "XXXX....X..X.X.X.X...X.X.X.X.XXX.....XXX...X."}
Returns: 8
{".X...X.X.XXX..XX..XX.......X.X.X.X.....X...X...", ".....X........................X.X........X.....", "...X...X.....X...X...X.X.....X...X.XXX.X.X...X.", "..X.....X.X...............X...XX..X...X..X....X"}
Returns: 20
{".X...X.......X.X...........X.X...X.....X...X...", "............X.X.......X.X...X...X.X.X.......X..", "...X.....X.X...X.......X....X......X.....XXX...", "......X.....X...X..X.X....X.X.X.........X...X.."}
Returns: 25
{".X.X.X.X..X..X.XX....X.......X.X.......X.....X.", "......X.X...........................X.X...X....", ".X..X.X..X.X..........X..X...XX........X.X...X.", "........X........................X....X.....X.."}
Returns: 26
{".X...X.X.....X.X.....X.......X.X..X..X.X.X.X.X.", "....X...X.X.................XXX...........X.X..", ".X.X.X.X.....X.X.....X.....X.....X.X.X.....X...", "..............X...X......X............X..X..X.."}
Returns: 20
{"...X.X...X...X..XX.X.......X.X.X..X..X...X...X.", "..X.............XX....X.X..X..X.........X......", ".X.X..XXX..XXX.X.X.X.X..............XX...X.XXX.", "......X.......X..X..X.X...........X.....X.....X"}
Returns: 20
{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}
Returns: 0
{"X.X......X.X.X.......X...X.X...X.X........X..X.", "....X...X.......X.....X.X...X.....X...........X", ".X.X..XX.X.X.X.X.X.X.X.X.....X.X...X.....X...X.", "....X..........XX...X.X..........XX...X...X...."}
Returns: 19
{"...X...X...X.X...X...X.....X.......X.X.X.X.....", "..........X.X.X...X.......X.X.....X...X.......X", ".X.X.....X...X...X.X...X.X.X.X..X..X...X...X.X.", "X.............X.......X....X..X.....X......X..."}
Returns: 20
{".X.....X...X.....X.....X.......X.X.........X...", "....................X...............X.......X.X", ".........X.X.....X...X.X........XX...X.X.X.X...", "........X.......X.............X.X...X......X..."}
Returns: 27
{"..X..X.....X.X.X...X.X.X.X.......X.X.X...XXX.X.", ".....X..........X...................X..........", "...X.X..X....X.X.X...X.....X.X.X............XX.", "......X.........X.X.................X.....X...."}
Returns: 22
{".....X.X.X...........X...............X.........", "..X...X....X....X.X...X.....................XXX", ".....X.....X.X.....X.X.X.X.......X..X...X....X.", "..X.................X...................X......"}
Returns: 30
{"XX..XXXXXXX.X.XX", "..XX.......X.X.X", "XXX.X.X....XX.X.", "....X....X.X.X.."}
Returns: 5
{"X...X...X.XXXX..X.X...X.X...X..X...XX.", "...X...X...X.X.....X...X.XXX.X.X...X..", ".X..X.XX.XX.X.X.X.....X.XX..XXX.XX...X", "..X....X.X.X...X.......X.X...........X"}
Returns: 22
{"...XX.X.XX.", ".X...X...X.", "X.....XXXXX", "........XX."}
Returns: 5
{"...XXXXXX.X...XX....XX....XX.XX.XXX...X.XX..X.X", ".X.X.XXX.X...X.X.X...X.XXX.X......XX.X.X...X...", ".X......X..X..XX..X.X...XX..X.X..XX.X.X.X.X.X..", "...X.X...X..X....X.X.X...X.XX..X.X.........X.X."}
Returns: 27
{"X.X.X.X.X.X.X.XXX.X.X.X.X.X.X.", ".X.X.X.X.X.X.X.X.X.X.X.X.X.X.X", "X.X.X.X.X.X.X.X.XXX.X.X.X.X.X.", ".X.X.X.X.X.X.X.X.X.X.X.X.X.X.X"}
Returns: 0
{".X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.", "......X..............................", ".X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.", "....X.X.....X.......X.X.X.......X...."}
Returns: 0
{"XX..XXXXXXX.X.XXX.XXX.....X..XX.XXX.X", "XXX.X.XXXXXXXXXXXXXXXXXXXXXXXXX.XXX.X", "X.XXXX..X.X...XXX...X.XX...XX...XXX.X", "XXX.XXXXXXXXXXXXXXXXXXX.XXXXX.X.X.XXX"}
Returns: 0
{"X.....XXX.XX..XXXXXXXXX...X.XX.XX....X", ".XXXX..X..XXXXXXXX....XX.X.X.X.....XXX", "....XX....X.XX..X.X...XX.X..XXXXXXX..X", "XX.XXXXX.X.X..X..XX.XXX..XX...XXX.X..." }
Returns: 13
{"X.....XXX.XX..XXXXXXXXX...X.XX.XX....X", ".XXXX..X..XXXXX.XX....XX.X.X.X.....XXX", "....XX....X.XX..X.X...XX.X..XXXXXXX..X", "XX.XXXXX.X.X..X..XX.XXX..XX.X.XXX.X..." }
Returns: 13
{"...............................................", "...............................................", "...............................................", "..............................................." }
Returns: 46
{"....", "....", "...." }
Returns: 2
{"X.X", "...", "X.X" }
Returns: 1
{"X...", "....", ".X.." }
Returns: 2
{"X.....XXX.XX..X...XXXXX...X.XX.XX....X", ".X..X..X..XXXXX.......XX.X.X.X.....XXX", "....XX....X.XX..X.X...XX.X..XXXXXXX..X", "XX.XXXXX.X.X..X..XX.XXX..XX...XXX.X..." }
Returns: 15
{".....XXX.....XX...XXXX..X....XX....XXXXXX...X.X", "..X..X.X.....X....XX.X..X....XX.X.......X...XXX", "X..X.X.X.....XX...XX.X..X....XX....XX...X..XX.X", "....XXX......XX...X..X..X....XXXX..X....X...X.X" }
Returns: 22
{"XX..XXX.....X...X.XX.XX....X", "XX....XX....XX.X.X.X.....XXX", "X.XX..X.X......X..XXXXXXX..X", ".X..X..XX......XX.......X..." }
Returns: 12
{"...............", "...............", "...............", "..............." }
Returns: 14
{"..X...X......XX...X....X.X.X.X.X.XXX......XX...", "....XX..X...X.......XX........XXX..X..X..X...XX", "X.X....X.....XX.X.X.X..X..X..X..X..XX......XXXX", "....XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.....XXX" }
Returns: 18
{".X", "XX" }
Returns: 0
{"X.", ".." }
Returns: 1
{"X..", "X.X" }
Returns: 0