Statistics

Problem Statement for "BattleshipChecker"

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

  1. {"......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.

  2. {"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.

  3. {".....XX...", ".XX.......", "..........", ".X....XXX.", ".X........", ".....X....", "..X..X....", ".....X....", "...X......", "X.....XXXX"}

    Returns: "REJECTED"

    One 1x1 ship is missing.

  4. {".....XX..X", ".XX......X", "..........", ".X....XXX.", ".X........", ".....X..X.", "..X..X....", ".....X....", "...X......", "X.....XXXX"}

    Returns: "REJECTED"

    There is one extra 1x2 ship.

  5. {".....XX..X", ".XX......X", "..........", "......XXX.", "..........", ".....X..X.", "..X..X....", ".....X....", "...X......", "X.....XXXX"}

    Returns: "ACCEPTED, 3 POINTS"

  6. {"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.

  7. {"X.......X.", "...XXXX...", ".X......X.", "....XX....", "...X.....X", "...X.....X", ".....XXX..", ".........X", ".........X", ".........X"}

    Returns: "REJECTED"

    Diagonal touching is not allowed.

  8. {"..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", ".........."}

    Returns: "REJECTED"

  9. {"X........X", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "X........X"}

    Returns: "REJECTED"

  10. {"XXXXXXXXXX", "XXXXXXXXXX", "XXXXXXXXXX", "XXXXXXXXXX", "XXXXXXXXXX", "XXXXXXXXXX", "XXXXXXXXXX", "XXXXXXXXXX", "XXXXXXXXXX", "XXXXXXXXXX"}

    Returns: "REJECTED"

  11. {".XXXXXXXX.", "XXXXXXXXXX", "XXXXXXXXXX", "XXXXXXXXXX", "XXXX.XXXXX", "XXXXXXXXXX", "XXXXXXXXXX", "XXXXXXXXXX", "XXXXXXXXXX", ".XXXXXXXX."}

    Returns: "REJECTED"

  12. {"....XXX..X", "XXXXX.XXXX", "XXXXXXXXXX", "XX.XX.XXXX", "XX.XXXX...", "XX.XX.XXXX", "XXXXXXXXXX", "XXXXX.XXXX", "XXXXXXXXXX", "X..XXX..XX"}

    Returns: "REJECTED"

  13. {"XXXX...XXX", "..........", "....XXX...", ".XX.......", ".....X....", ".......XX.", "..X.......", "....XX....", ".......X..", ".....X...."}

    Returns: "ACCEPTED, 1 POINTS"

  14. {"XXXX...XXX", "..........", "....XXX...", ".XX.......", ".....X....", ".......XX.", "...X......", "....XX....", ".......X..", ".....X...."}

    Returns: "REJECTED"

  15. {"XXXX...XXX", "..........", "....XXX...", ".XX.......", ".....X....", ".......XX.", "..........", "...XXX....", ".......X..", ".....X...."}

    Returns: "REJECTED"

  16. {"XXXX...XXX", "..........", "....XXX...", ".XX.......", ".....X....", ".XX....XX.", "..........", "...XXX....", ".X.....X..", ".....X...."}

    Returns: "REJECTED"

  17. {"XXXX......", "..........", ".......X..", ".XX.......", ".....X....", ".XX....XX.", "..........", "...XXX....", ".......X..", ".....X...."}

    Returns: "REJECTED"

  18. {"...X.X.X.X", "...X.X....", "...X...X.X", "...X.X....", ".....X....", "...X......", "...X.X....", "...X.X....", "..........", "...XXX...."}

    Returns: "ACCEPTED, 6 POINTS"

  19. {"..XXXX....", "..........", "......X..X", "......X...", "..XX......", "......XXX.", "...XX.....", ".........X", ".X...X...X", "....X....X"}

    Returns: "REJECTED"

  20. {"..XXXX....", "..........", "......X..X", "......X.X.", "..XX......", "......XXX.", "...XX.....", ".........X", ".X...X...X", ".........X"}

    Returns: "REJECTED"

  21. {"..XXXX....", "..........", "......X..X", "......X...", "..XX......", "......XXX.", "...XX.....", ".........X", ".X...X...X", "..X......X"}

    Returns: "REJECTED"

  22. {"..........", "..X...X...", "..........", ".X.XXXX.X.", "........X.", ".X.XXX....", "........X.", ".XXX.XX.X.", "..........", ".........."}

    Returns: "ACCEPTED, 7 POINTS"

  23. {"XXXX..X..X", "..........", "X........X", ".........X", "X........X", "X.........", "..........", "X........X", ".........X", "XXX..XX..."}

    Returns: "ACCEPTED, 5 POINTS"

  24. {"XXXX..X..X", "..........", "X........X", ".........X", "X........X", "X.........", ".X........", "X........X", ".........X", "XXX..XX..."}

    Returns: "REJECTED"

  25. {"XXXX..X...", ".....X....", "X........X", ".........X", "X........X", "X.........", "..........", "X........X", ".........X", "XXX..XX..."}

    Returns: "REJECTED"

  26. {"XXXX..X..X", "..........", ".........X", ".........X", "X........X", "X.........", "........X.", "X........X", ".........X", "XXX..XX..."}

    Returns: "REJECTED"

  27. {"X....XX...", "...X......", "........X.", ".X..X.....", ".X..X...XX", ".X..X.....", "....X...XX", "..........", ".X......XX", "...XXX...."}

    Returns: "REJECTED"

  28. {"X.....X...", "...X......", "........X.", ".X..X.....", ".X..X...XX", ".X..X.....", "....X...XX", "..........", ".X......XX", "...XXX...."}

    Returns: "REJECTED"

  29. {"X.........", "...X......", "........X.", ".X..X.....", ".X..X..X..", ".X..X..X..", "....X...XX", "..........", ".X......XX", "...XXX...."}

    Returns: "REJECTED"

  30. {"X.........", "...X......", "........XX", ".X..X.....", ".X..X..X..", ".X..X..X..", ".........X", "..........", ".X......XX", "..XXXX...."}

    Returns: "REJECTED"

  31. {"X.........", "...X......", "........XX", ".X..X.....", ".X..X..X..", ".X..X..X..", ".........X", "..........", "X.......XX", "..XXXX...."}

    Returns: "ACCEPTED, 2 POINTS"

  32. {"X.........", ".X........", "........XX", ".X..X.....", ".X..X..X..", ".X..X..X..", ".........X", "..........", "X.......XX", "..XXXX...."}

    Returns: "REJECTED"

  33. {"X.........", "..........", "........XX", ".X..X.....", ".X..X..X..", ".X..X..X..", ".........X", "X.........", "X.......X.", "..XXXX...X"}

    Returns: "REJECTED"

  34. {".........X", ".X......X.", ".X....X...", "......X...", ".XXX..X...", "......X...", ".X......X.", "....XX..X.", "..X.......", ".......XXX"}

    Returns: "REJECTED"

  35. {"....X....X", ".X......X.", ".X....X...", "......X...", ".XXX..X...", "......X...", ".X......X.", "....XX....", "..X.......", ".......XXX"}

    Returns: "REJECTED"

  36. {"....X....X", ".X........", ".X....X...", "......X...", ".XXX..X...", "......X...", "........X.", "....XX..X.", "..........", "X......XXX"}

    Returns: "REJECTED"

  37. {"....X....X", ".X........", ".X....X...", "......X...", ".XXX..X...", "......X...", "........X.", ".X..XX..X.", "..........", "X......XXX"}

    Returns: "ACCEPTED, 1 POINTS"

  38. {"...X......", "X..X......", "...X......", "X..X......", ".....XXX..", "X.........", "....X.....", "X...X.....", "..........", ".XXX.XX.XX"}

    Returns: "ACCEPTED, 1 POINTS"

  39. {"...X......", "X..X......", "...X......", "X..X......", "...XXX....", "X.........", "....X.....", "X...X.....", "..........", ".XXX.XX.XX"}

    Returns: "REJECTED"

  40. {"...X......", "X..X......", "...X......", "X..X......", "....XXX...", "X.........", "....X.....", "X...X.....", "..........", ".XXX.XX.XX"}

    Returns: "REJECTED"

  41. {"...X......", "X..X......", "...X......", "X..XXX....", "..........", "X.........", "....X.....", "X...X.....", "..........", ".XXX.XX.XX"}

    Returns: "REJECTED"

  42. {"XXXXXXXXXX", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "..........", "XXXXXXXXXX"}

    Returns: "REJECTED"

  43. {"XXXXXXXXXX", "X........X", "X........X", "X........X", "X........X", "X........X", "X........X", "X........X", "X........X", "XXXXXXXXXX"}

    Returns: "REJECTED"

  44. {"..........", "..........", "...XXXXXX.", "...X....X.", "...X....X.", "...X....X.", "...X....X.", "...XXXXXX.", "..........", ".........."}

    Returns: "REJECTED"

  45. {"XXXX.X....", "..........", "XXX.XX....", "..........", "XXX.XX....", "..........", "X.XX.X....", "..........", "..........", ".........."}

    Returns: "REJECTED"

  46. {"XXXX.X.X..", "..........", "XXX..XX...", "..........", "XXX..XX...", "..........", "XX.X.X....", "..........", "..........", ".........."}

    Returns: "ACCEPTED, 9 POINTS"

  47. {"X..XX...X.", "........X.", "..XX....X.", "..........", "...XXXX...", "........X.", ".X........", "......X..X", "XXX...X...", ".........."}

    Returns: "ACCEPTED, 3 POINTS"

  48. {"X.......X.", "........X.", "..XX....X.", "..........", "...XXXX...", "........X.", ".X........", "......X..X", "XXX...X...", ".........."}

    Returns: "REJECTED"

  49. {"X..XX...X.", "........X.", "..XX....X.", "..........", "...XXXX...", "........X.", ".X........", "......X..X", "XXX...X...", "........XX"}

    Returns: "REJECTED"

  50. {"...XX...X.", "........X.", "..XX....X.", "..........", "...XXXX...", "........X.", ".X........", "......X..X", "XXX...X...", ".........."}

    Returns: "REJECTED"

  51. {"X..XX...X.", "........X.", "..XX....X.", "..........", "...XXXX...", "........X.", ".X........", "......X..X", "XXX...X...", "....X....."}

    Returns: "REJECTED"

  52. {"X..XX...X.", "........X.", "..XX....X.", "..........", "...XXXX...", "........X.", ".X........", "......X..X", "......X...", ".........."}

    Returns: "REJECTED"

  53. {"X..XX...X.", "........X.", "X.XX....X.", "X.........", "X..XXXX...", "........X.", ".X........", "......X..X", "XXX...X...", ".........."}

    Returns: "REJECTED"

  54. {"X..XX...X.", "........X.", "..XX....X.", "..........", "..........", "........X.", ".X........", "......X..X", "XXX...X...", ".........."}

    Returns: "REJECTED"

  55. {"X..XX...X.", "........X.", "X.XX....X.", "X.........", "X..XXXX...", "X.......X.", "..X.......", "......X..X", "XXX...X...", ".........."}

    Returns: "REJECTED"

  56. {"X..XX...X.", "........X.", "..XX....X.", "..........", "..XX.XX...", "........X.", ".X........", "......X..X", "XXX...X...", ".........."}

    Returns: "REJECTED"

  57. {"X........X", "...XXX....", "X........X", ".........X", "X..XXXX...", "..........", "..XXX.....", "........X.", "........X.", ".....XX..."}

    Returns: "ACCEPTED, 3 POINTS"

  58. {"X........X", "...XXX....", "X........X", ".........X", "X..XXXX...", "..........", "..XX.X....", "........X.", "........X.", ".....XX..."}

    Returns: "REJECTED"

  59. {"X........X", "...XXX....", "X........X", ".........X", "X..XXXX...", "..........", "..XXX...X.", "..........", "........X.", ".....XX..."}

    Returns: "REJECTED"

  60. {"X........X", "...XXX....", "X........X", ".........X", "X..XXXX...", "..........", "..XXX.....", ".......X..", "........X.", ".....XX..."}

    Returns: "REJECTED"

  61. {"...XXXX...", "........X.", "..X.XX....", "..X....X..", "....XX....", "..X.......", "....XXX...", "..........", "...XXX.X..", ".........."}

    Returns: "ACCEPTED, 5 POINTS"

  62. {"...XXXX...", "........X.", "..X.XX....", "..X.......", "....XX....", "..X.......", "....XXX...", "..........", "...XXX.X..", "........X."}

    Returns: "REJECTED"

  63. {"...XXXX...", ".......X..", "..X.XX....", "..X....X..", "....XX....", "..X.......", "....XXX...", "..........", "...XXX.X..", ".........."}

    Returns: "REJECTED"

  64. {"...XXX....", ".X......X.", ".X..X.....", ".X..X...XX", "....X.....", "....X.....", "..........", "..XX..XX..", ".........X", "....X.X..."}

    Returns: "ACCEPTED, 2 POINTS"

  65. {"...XXX....", ".X......X.", ".X..X.....", ".X..X...XX", "....X.....", "X...X.....", "X.........", "X.XX..XX..", "X........X", "X...X.X..."}

    Returns: "REJECTED"

  66. {"...XXX....", ".X......X.", ".X..X.....", ".X..X...XX", "....X.....", "....X.....", "....X.....", ".XX...XX..", "..........", "....X.X..."}

    Returns: "REJECTED"

  67. {"...XXX....", ".X......X.", ".X..X.....", ".X..X...XX", "....X.....", "....X.....", "....X.....", ".XX...XX..", "..........", ".X..X.X..."}

    Returns: "REJECTED"

  68. {"...XXX....", ".X......X.", ".X........", ".X..X...XX", "....X.....", "....X.....", "....X.....", ".XX...XX..", "..........", "X...X.X..."}

    Returns: "ACCEPTED, 1 POINTS"

  69. {"X..X..X..X", "..........", "XX..XX..XX", "..........", "XX..XX....", "X...X.....", "..........", "XX........", "XX........", ".........." }

    Returns: "REJECTED"

  70. {"......X..X", ".XXX..X..X", "......X..X", "X.X...X..X", "X........X", "...XX.X...", "......X...", ".XX...X...", "..........", ".X.X..X..." }

    Returns: "REJECTED"

  71. {"X..XXXX.X.", "..........", ".X......X.", "....XX....", ".........X", ".........X", ".....XXX..", ".........X", "..X......X", "..X......X" }

    Returns: "ACCEPTED, 1 POINTS"

  72. {"X.X.X.X.XX", "..........", "XX.XX..XXX", "..........", "XXXX...XXX", "..........", ".....XXXXX", "..........", "..........", ".........." }

    Returns: "REJECTED"

  73. {"XXXX......", "..........", "X.X.X.X.XX", "..........", "XX.XXX.XXX", "..........", "........XX", "..........", "..........", ".........." }

    Returns: "ACCEPTED, 6 POINTS"

  74. {"..........", ".XXX..X...", "......X...", "X.X...X...", "X.........", "..XXX.X...", "......X...", ".XX...X...", "..........", ".X.X..X..." }

    Returns: "REJECTED"


This problem statement is the exclusive and proprietary property of TopCoder, Inc. Any unauthorized use or reproduction of this information without the prior written consent of TopCoder, Inc. is strictly prohibited. (c)2024, TopCoder, Inc. All rights reserved.
This problem was used for: