Problem Statement |
| |
Battleship is a game in which two players try to sink each other's ships. Each player has a 10x10 square grid on which he must place 10 ships. Each ship consists of between 1 and 4 cells arranged in a straight line. Ships must be placed parallel to the sides of the board, and no two ships can share a cell or touch each other. Touching is defined as occupying cells that share a vertex. Each player must place the following ships on his board: 4 ships of length 1, 3 of length 2, 2 of length 3, and 1 of length 4.
The effectiveness of a player's board is defined as the number of rows that contain no ships plus the number of columns that contain no ships. You will be given a String[] board, where each element represents one row of a player's board. If the board does not follow the above rules, return "REJECTED". If it does, return "ACCEPTED, X POINTS", where X is the effectiveness of the board, with no extra leading zeros.
|
| |
Definition |
| | | Class: | BattleshipChecker | | Method: | checkBoard | | Parameters: | String[] | | Returns: | String | | Method signature: | String checkBoard(String[] board) | | (be sure your method is public) |
|
| |
|
| |
Notes |
| - | The return value for an accepted board with a non-plural effectiveness must still end with "POINTS" (not "POINT"). |
| |
Constraints |
| - | board will contain exactly 10 elements. |
| - | Each element of board will contain exactly 10 characters. |
| - | Each character of each element of board will be either '.' or 'X'. |
| |
Examples |
| 0) | |
| | {"......X...",
".XXX..X...",
"......X...",
"X.X...X...",
"X.........",
"...XX.X...",
"......X...",
".XX...X...",
"..........",
".X.X..X..."} |
| Returns: "ACCEPTED, 5 POINTS" | | This one is correct, and has 4 free columns and 1 free row, for a total of 5 points. |
|
|
| 1) | |
| | {"X.X.X.X...",
"......X...",
".XX...X...",
"......X...",
"......X..X",
"...X..X...",
"...X..X...",
"......X...",
"..XX..X...",
"......X..."} |
| Returns: "REJECTED" | | It is unacceptable to have a ship of size 1x10. |
|
|
| 2) | |
| | {".....XX...",
".XX.......",
"..........",
".X....XXX.",
".X........",
".....X....",
"..X..X....",
".....X....",
"...X......",
"X.....XXXX"} |
| Returns: "REJECTED" | |
|
| 3) | |
| | {".....XX..X",
".XX......X",
"..........",
".X....XXX.",
".X........",
".....X..X.",
"..X..X....",
".....X....",
"...X......",
"X.....XXXX"} |
| Returns: "REJECTED" | | There is one extra 1x2 ship. |
|
|
| 4) | |
| | {"X.......X.",
"...XXXX...",
".X......X.",
"....XX....",
".........X",
".........X",
".....XXX..",
".........X",
"..X......X",
"..X......X"} |
| Returns: "ACCEPTED, 0 POINTS" | | This is a valid configuration even though it is not very effective. |
|
|
| 5) | |
| | {"X.......X.",
"...XXXX...",
".X......X.",
"....XX....",
"...X.....X",
"...X.....X",
".....XXX..",
".........X",
".........X",
".........X"} |
| Returns: "REJECTED" | | Diagonal touching is not allowed. |
|
|