Statistics

Problem Statement for "RobotSquirrel"

Problem Statement

You've just completed the design for your patent-pending Robot Squirrel. Now all you have to do is program it.

The squirrel is designed to navigate mazes and collect nuts. Unfortunately, it is so small that it can only hold 12 commands in its memory. You wisely decide to split up the memory into two parts, for maximum flexibility. Six of the commands will be the squirrel's main() function, and the other six commands will be a subroutine named sub(). Among your available instructions are:

1. Move forward one square.
2. Turn left 90 degrees.
3. Turn right 90 degrees.
4. Pick up a nut, if one exists where the squirrel is standing.
5. Stand around and do nothing.
6. Call sub(). You can only do this if you are currently in main().

Given a maze (a rectangular grid consisting of empty space ('.'), nuts ('n'), and walls ('X')), along with a starting position and direction (0 = north, 1 = east, 2 = south, 3 = west), determine how to program the squirrel to collect as many nuts as possible. Return the maximum number of nuts it can collect.

Definition

Class:
RobotSquirrel
Method:
maxNuts
Parameters:
String[], int, int, int
Returns:
int
Method signature:
int maxNuts(String[] maze, int squirrelRow, int squirrelCol, int squirrelDir)
(be sure your method is public)

Notes

  • All six lines of main() must be coded, and all six lines of sub() must be coded, even if they are never called.
  • It is allowable for a squirrel to start on top of a nut. Nuts are not collected unless the squirrel picks them up.
  • Trying to pick up a nut when there is no nut in the squirrel's square has no effect.
  • Walking into a wall has no effect. The squirrel stays at the location it was at before the command was executed.
  • The maze wraps around in all four directions. That is, if the squirrel leaves the maze off the top, it will reappear on the bottom in the same column, facing north. (The same holds true for the other three sides of the board as well.)

Constraints

  • maze will contain between 1 and 50 elements, inclusive.
  • Each element of maze will contain between 1 and 50 characters, inclusive.
  • Each element of maze will contain the same number of characters.
  • Each element of maze will contain only the characters '.', 'n', and 'X'.
  • squirrelRow will be a nonnegative integer less than the number of elements in maze.
  • squirrelCol will be a nonnegative integer less than the number of characters in each element of maze.
  • squirrelDir will be an integer between 0 and 3, inclusive.
  • The squirrel will never be positioned to start on a wall.

Examples

  1. {"X..............................n"}

    0

    1

    1

    Returns: 1

    The squirrel starts in the second column, facing east. The nut is located 30 squares away. To get the nut, you could program the squirrel as follows: main() { sub(); sub(); sub(); sub(); sub(); pick_up; } sub() { move; move; move; move; move; move; } In the above code, the purpose of sub() is to move forward six squares. main() calls sub() five times to move a total of 30 squares. The last line of main actually picks up the nut. Since the nut can be aquired, your method should return 1.

  2. {"X.....n....n....n....n....n....n....n"}

    0

    1

    1

    Returns: 6

    The squirrel starts in the same position and direction as in the previous example. A couple small changes to our code will allow it to collect six of the seven nuts on the board: main() { sub(); sub(); sub(); sub(); sub(); sub(); } sub() { move; move; move; move; move; pick_up; } The seventh nut is too far away for the squirrel to collect. So your method should return 6.

  3. {"nXn" ,"X.X" ,"nXn"}

    1

    1

    2

    Returns: 0

    In this example, the squirrel is completely surrounded by walls and thus cannot reach any of the four nuts on the board.

  4. {"..X..." ,".XnXX." ,"Xnn.nX" ,".X.XX." ,".XnX.." ,"..X..."}

    2

    2

    0

    Returns: 5

    All five nuts can be gathered with the following code: main() { sub(); sub(); left; sub(); sub(); pick_up; } sub() { move; pick_up; left; left; move; move; }

  5. {"nnn" ,"nnn" ,"nnn"}

    1

    1

    2

    Returns: 9

    There are many ways to get all nine nuts. When reading the following code, keep in mind that if the squirrel leaves the board off one side, it will wrap around to the other side of the board. main() { sub(); sub(); sub(); left; move; sub(); } sub() { pick_up; left; move; pick_up; move; pick_up; }

  6. {"nnnn" ,"nnnn" ,"nnnn" ,"nnnn"}

    3

    3

    3

    Returns: 11

    The optimal program will gather 11 nuts. One such program is shown below. main() { sub(); sub(); move; sub(); move; sub(); } sub() { pick_up; move; pick_up; move; pick_up; left; }

  7. {"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn" ,"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn" ,"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn" ,"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn" ,"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn" ,"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn" ,"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn" ,"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn" ,"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn" ,"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn" ,"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn" ,"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn" ,"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn" ,"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn" ,"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn" ,"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn" ,"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn" ,"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn" ,"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn" ,"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn" ,"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn" ,"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn" ,"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn" ,"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn" ,"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn" ,"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn" ,"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn" ,"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn" ,"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn" ,"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn" ,"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn" ,"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn" ,"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn" ,"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn" ,"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn" ,"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn" ,"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn" ,"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn" ,"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn" ,"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn" ,"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn" ,"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn" ,"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn" ,"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn" ,"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn" ,"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn" ,"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn" ,"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn" ,"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn" ,"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn"}

    0

    0

    0

    Returns: 18

    On a board completely covered with nuts, there's no need to do anything except pick up and move. main() { sub(); sub(); sub(); sub(); sub(); sub(); } sub() { pick_up; move; pick_up; move; pick_up; move; }

  8. {"nXX...n.X",".XXXXX.XX",".XXXXX.XX","n..n..nX.","XXX.XX.XX",".XXXXXXXX"}

    0

    3

    1

    Returns: 5

  9. {"X................................................n"}

    0

    1

    1

    Returns: 0

  10. {"nnnnnnnnnnnnnnnnnnnnnnnn.nnnnnnnnnnnnnnnnnnnnnnnnn","nnnnnnnnnnnnnnnnnnnnnnnn.nnnnnnnnnnnnnnnnnnnnnnnnn","nnnnnnnnnnnnnnnnnnnnnnnn.nnnnnnnnnnnnnnnnnnnnnnnnn","nnnnnnnnnnnnnnnnnnnnnnnn.nnnnnnnnnnnnnnnnnnnnnnnnn","nnnnnnnnnnnnnnnnnnn...........nnnnnnnnnnnnnnnnnnnn","nnnnnnnnnnnnnnnnnnnnnnnn.nnnnnnnnnnnnnnnnnnnnnnnnn","nnnnnnnnnnnnnnnnnn.nnnn...nnnn.nnnnnnnnnnnnnnnnnnn","nnnnnnnnnnnnnnnnnnnnnnnn.nnnnnnnnnnnnnnnnnnnnnnnnn","nnnnnnnnnnnnnnnnnnn...........nnnnnnnnnnnnnnnnnnnn","nnnnnnnnnnnnnn.....................nnnnnnnnnnnnnnn","nnnnnnnnnnnnnnnnnnn.nnn...nnn.nnnnnnnnnnnnnnnnnnnn","nnnnnnnnnnnnnnnnnn.............nnnnnnnnnnnnnnnnnnn","nnnnnnnnnnnn.nnn.................nnn.nnnnnnnnnnnnn","nnnnnnnnnnnnnn.....................nnnnnnnnnnnnnnn","nnnnnnnnn...............................nnnnnnnnnn","nnnnnnnnnnnnnn.n.................n.nnnnnnnnnnnnnnn","nnnnnnnnnnnn.........................nnnnnnnnnnnnn","nnnnnnnnnnnn.n.....................n.nnnnnnnnnnnnn","nnnnnn.nn...............................nn.nnnnnnn","nnnn.........................................nnnnn","nnnnnnnn.................................nnnnnnnnn","nnnnnnnnn.nn.........................nn.nnnnnnnnnn","nnnnnnnnn...............................nnnnnnnnnn","nnnn.........................................nnnnn","..................................................","nnnnnnnnn.nn.........................nn.nnnnnnnnnn","nnnnnnnnn.nn.........................nn.nnnnnnnnnn","nnnnnnnnn.nn.........................nn.nnnnnnnnnn","nnnnnnnnn.nn.........................nn.nnnnnnnnnn","nnnnnnnnn.nnn.......................nnn.nnnnnnnnnn","nnnnnnnnnnnn.n.....................n.nnnnnnnnnnnnn","nnnnnnnnnnnnnn.n.................n.nnnnnnnnnnnnnnn","nnnnnnnnnnnnnn.n.n.............n.n.nnnnnnnnnnnnnnn","nnnnnnnnnnnnnn.nnn.............nnn.nnnnnnnnnnnnnnn","nnnnnnnnnnnnnn.nnn.............nnn.nnnnnnnnnnnnnnn","nnnnnnnnnnnnnnnnnnn...n...n...nnnnnnnnnnnnnnnnnnnn","nnnnnnnnnnnnnnnnnn....n...n....nnnnnnnnnnnnnnnnnnn","nnnnnnnnnnnnnnnnnnn.nnn...nnn.nnnnnnnnnnnnnnnnnnnn","nnnnnnnnnnnnnnnnnnn.nnn...nnn.nnnnnnnnnnnnnnnnnnnn","nnnnnnnnnnnnnnnnnnn.nnn...nnn.nnnnnnnnnnnnnnnnnnnn","nnnnnnnnnnnnnnnnnnnnnnnn.nnnnnnnnnnnnnnnnnnnnnnnnn","nnnnnnnnnnnnnnnnnnnnnnnn.nnnnnnnnnnnnnnnnnnnnnnnnn","nnnnnnnnnnnnnnnnnnnnnnnn.nnnnnnnnnnnnnnnnnnnnnnnnn","nnnnnnnnnnnnnnnnnnnnnnnn.nnnnnnnnnnnnnnnnnnnnnnnnn","nnnnnnnnnnnnnnnnnnnnnnnn.nnnnnnnnnnnnnnnnnnnnnnnnn","nnnnnnnnnnnnnnnnnnnnnnnn.nnnnnnnnnnnnnnnnnnnnnnnnn","nnnnnnnnnnnnnnnnnnnnnnnn.nnnnnnnnnnnnnnnnnnnnnnnnn","nnnnnnnnnnnnnnnnnnnnnnnn.nnnnnnnnnnnnnnnnnnnnnnnnn","nnnnnnnnnnnnnnnnnnnnnnnn.nnnnnnnnnnnnnnnnnnnnnnnnn","nnnnnnnnnnnnnnnnnnnnnnnn.nnnnnnnnnnnnnnnnnnnnnnnnn"}

    24

    24

    0

    Returns: 0

  11. {"nnnnnnnnnnnnnnnnnnn.nnn.n.nnn.nnnnnnnnnnnnnnnnnnnn","nnnnnnnnnnnnnnnnnnn.nnn.n.nnn.nnnnnnnnnnnnnnnnnnnn","nnnnnnnnnnnnnnnnnnn..nn.n.nn..nnnnnnnnnnnnnnnnnnnn","nnnnnnnnnnnnnnnnnn....n.n.n....nnnnnnnnnnnnnnnnnnn","nnnnnnnnnnnnnnnnnn....n.n.n....nnnnnnnnnnnnnnnnnnn","nnnnnnnnnnnnnn.nnn.............nnn.nnnnnnnnnnnnnnn","nnnnnnnnnnnnnn.n.n.............n.n.nnnnnnnnnnnnnnn","nnnnnnnnnnnnnn.n.n.............n.n.nnnnnnnnnnnnnnn","nnnnnnnnnnnnnn.n.n.............n.n.nnnnnnnnnnnnnnn","nnnnnnnnnnnn.n.....................n.nnnnnnnnnnnnn","nnnnnnnnn.nn.........................nn.nnnnnnnnnn","nnnnnnnnn.nn.........................nn.nnnnnnnnnn","nnnnnnnnn.nn.........................nn.nnnnnnnnnn","nnnnnnnnn.nn.........................nn.nnnnnnnnnn","nnnnnnnn................X................nnnnnnnnn","..................................................","nnnnnnnnn.nn.........................nn.nnnnnnnnnn","nnnnnnnnn.nn.........................nn.nnnnnnnnnn","nnnnnnnnn.nn.........................nn.nnnnnnnnnn","nnnnnnnnn.nn.........................nn.nnnnnnnnnn","nnnnnnnnn.nnn.......................nnn.nnnnnnnnnn","nnnnnnnnnnnn.n.....................n.nnnnnnnnnnnnn","nnnnnnnnnnnnnn.n.................n.nnnnnnnnnnnnnnn","nnnnnnnnnnnnnn.n.................n.nnnnnnnnnnnnnnn","nnnnnnnnnnnnnn.nnn.............nnn.nnnnnnnnnnnnnnn","nnnnnnnnnnnnnn.nnn.............nnn.nnnnnnnnnnnnnnn","nnnnnnnnnnnnnnnnnnn...n...n...nnnnnnnnnnnnnnnnnnnn","nnnnnnnnnnnnnnnnnn....n...n....nnnnnnnnnnnnnnnnnnn","nnnnnnnnnnnnnnnnnnn.nnn...nnn.nnnnnnnnnnnnnnnnnnnn","nnnnnnnnnnnnnnnnnnn.nnn...nnn.nnnnnnnnnnnnnnnnnnnn","nnnnnnnnnnnnnnnnnnn.nnn...nnn.nnnnnnnnnnnnnnnnnnnn","nnnnnnnnnnnnnnnnnnnnnnnn.nnnnnnnnnnnnnnnnnnnnnnnnn","nnnnnnnnnnnnnnnnnnnnnnnn.nnnnnnnnnnnnnnnnnnnnnnnnn","nnnnnnnnnnnnnnnnnnnnnnnn.nnnnnnnnnnnnnnnnnnnnnnnnn","nnnnnnnnnnnnnnnnnnnnnnnn.nnnnnnnnnnnnnnnnnnnnnnnnn","nnnnnnnnnnnnnnnnnnnnnnnn.nnnnnnnnnnnnnnnnnnnnnnnnn"}

    15

    24

    0

    Returns: 0

  12. {".Xn....nXn..XnnX.nnnnn..nn..n..n.n..Xnn.nn.nnX.n","n.nn.nn..nnnn.n.n..X.nn.n....Xn...nnnnXn..nnnn.n","n..X.nnnXXnnn....X.X....nnnn.nn.nnX..nnnn.Xn....",".n.n.n.nn.Xn.nnX.nnnn.n.nn.X.n.nnn.nnn.nn.nnnnX.","n.nXn.Xnnnnn.....n.nXnn.nn.X.n..n..nnn.n..n..nnn",".n...nn..nnn..n.n..nn.nn..n.n....nn..n..n..nXn.X","..nnn...nn.Xn.nnn..nn...n.........n.nX..Xn.nn.nX","nn....nn.n.nnnn.nXnnn.Xn.nn..n..n.X..nXnn.nn.n.n","nnn.nnn.nnnn..n......nnn.X....nn.nnnnn..nnXn...n",".nnnXn.nnnn.nn....n..nnnnn.n.n.n....nnnn.n.nnnnX",".nnnn...nXn.n.n.n....nXnn.nn.nnnnn.n..nn...n..Xn","nn.n...n.nn..nnnn.nX.nn.n......n.n..nnn.XnnnX...","n.nnn.nnXn.n....nn..nn.n.n...n..nn.XnX.nn..nnn..","nn...nn.n.Xnnnn..n..nnnnnXnn.nn..nn..Xnn..nXnnn.",".XnXn...n.nn.nn..nnnnnXn.n.n.nn..nX.n.Xnnnn..n.n","nX.Xnnn.nnn...nn..n.XX.nX.n.nn.nnX.......n.nnn.n","Xnn.X.nnX...X...nnn.n.n.Xn.Xn..n...n..nn.nnnXn..","nn....Xn..nXnnnn.XnnnX..n.n.nnnn.nnXn..n..nnn...","...n.n...nnXn.X.nnnn....nn..Xnn...nXnnnnn.nnnnX.","...nn.n..nXnn.n.nnnnnX............Xn.nn..nX..nnn","..n.nn.nn.n.n.nn....nn.X...nXn.nnnXXXn.n.....nn.","....n.nX.n....nnn.nX...XnXnnXn.nn..n.nXnnn.nnn.n","n..nn..nXnnnnnn.XX.nnnX..n..XnXX..n.nn..nnn.n.X.",".nnX.n.XXn..n....nnnn.nn..X.nnnn..nn...n....nX..","nn...n.n...n..nnn.nnnn.n.n.X...nnnn.nnnnn.nnnn..",".nXnnnX.n.nnnnn..n..n......nnn.n.n...Xn..nn.n...","..n.nnn.....n.n.nn.nnn.nn.n.Xnnnnn....n..n.n...n",".n...nXX.nnX.....Xn..nn.n.nnn..nnXXnnnn..X.n..nn","nnn.X..X.nn...nn....nn..nn.n.Xnnnn..n..n...nn.n.","...n......n..nn..n.n...XX....n....n...nn..nn.n.X","X.nnnn.n.n.n.n.X........X..nnnX.....n.n.n.n..nn.","nn....n.n.nnnn.nn...n..n....n..nXnnn..nnnnn.n.n.",".n..nnXXX.n..XXnn.X.nnnn.....nnn.nnX.nXXXnXnn...","Xn.....XX.nXn.nn.nn.nXnnn.X...nn.X..n.nn.nn...n.","nnnn......n..n.n.n.nn.X.nnnX...nnX.n....nn..n..X","nn.nnn...n.n.n.nnnnXn..nnn..nX.X.n.nn..n.....nn."}

    19

    4

    3

    Returns: 9

  13. {"nnn...n.nXn.X..n.n.....n..n...Xn.n......nnXnXXX.Xn","n...n.Xn....nnX.nnX.n...n.X......nXn.nnnnn..X.n...",".nn.nn.n..nn..nn..n..n..nnnn..nn.n..n.n..Xn.n.XXnn","X....Xnn...nn..Xnn..nnXnnnnXnX.n.n..nXX..nn.......","nnX.........nnn.n.Xn..nn.n..nnnX.....n.n..n.nnnnnn","nnn.nn.n.n...nn.n.n.n.n....nX..n.nnXn...Xnnn.X....","nnnnnnn...n.n.n...X.nn.nXn.nn...nX.X..n...nn..nnn.","n..nn....nXn.nnnn.nnn...Xnnnn.X.XnXXX..nnn.n..nnnn","..nn..X.nn...X.X.n.nnn.nn...Xn..X..nn......nn...n.","nn..nn.nX.....Xn.nn.Xn..n.n.nn.nnnn..n..X.....nX.n"}

    0

    39

    3

    Returns: 7

  14. {"..X...nnn..nn..nnnnn.nXn.n..nnn.n....n.nn..n","...n..n.nnnXnnn.n.n.n.nnn.n..n...X.nnnnn..nX",".Xn.n.Xn.Xnnn..nn.nnn.nnnnXnnnXnn.n.nnXXnn..","..Xn.nnnXnnn...nn...nnnn...n.nn.....n.nn.nX.",".n..n.nnXn.nn.........XX..n.n.nnn.nn..nn.X.n","n.X.nnn..X.....n..nn.nn.nn.n..X..nn.....n..n","nn...nXnnn..nn.nn..nnn..n.nn...Xnnnnnnnn.n.n","Xn.nnnn....n..n.X.n..nn...nnn..X.........Xnn",".n..nXX..nXn.Xnn..n....Xn.n.X.nXXnn..n..n...","..nnn.nn..nnnXnnn....nnnnn.nXnnnn..nnn.X...n","n...Xnn.XX....nn....nn.n..n.nn..n.n..X...nnn","nnn.nnn.n.nnnnX.nnX.n.X.nnnXnnXn.n.n...n..nn","...n.Xnnn..nn.nX..nn.nn...n..n.n...n.nnn..n.","....nnn.n..n.n..Xn.nnn.nX.n.n...X...nn..Xn.n",".nnnn.nn..n......Xnnnn......n.n....nnn..nn..","n.n.nn....nnn..n.n.nnn.nnXnn.nn.nn......X.X.","nn.X.....n....n.n..nn.nn.nn.........n.nn..X.","X.n.n.nnn.Xn.nnXn.n.nnnX.n......nnX...nnnnn.",".nn...n....nnn.X.nn..n.n.nX...XX.n.nnnnn.nnn","..n..nn.n.nnn...nn..nn...nnnnnXnnnX.X...n.n.","nn..n..n..X...n.......nnnn.......nX.n.n.nnn.",".nnnn....nn.n...n..nnn..nn.n.X.nnX.n..n.nnnn","nn..nn....n.n.n.nn.nn.X.n..n...nnnnnX..nn..n","....n.nXnnn.nnnnnn..nX......nnn.n.nn..nnn.Xn","nn.n.nnnnn.n..nX..XnX.nX.X.nn.n....nnXnnnn.n","n..nnn.nn.XXn.nnnnXn...nnn...X.nn......n.nXn","nn.nnnXX..Xn...n.....nn..XnXnn..n.n.n..X.n..","nnnXn..nn.....nnnn...n.n.n.nnXX.n.n.n.nnnn.n","...nn.n.X.nn..nnXn.nnn.n.n.XnnXX....n....nnX","nn.XXX.X.n.nnX.nn.nn......n.nn...XXnXnnnX...","nn..nnnn.n...n.n.n..nn.nnnn.nn.nn.nnn..XnX..",".X.nnnnn...X.X.nn.n.n..X.nnn..n.n.X.nnn.nn..","nnXnn.nnnn.nnnnn..n....n.n.nnnnn.n.n...nnnn.",".n..n..nn..n....nX.nnnnnn.n.nXn.n.n.nXnn.n..","n.n.nn.n.nn....n......n.....n...nn.....X..nn","..nn.n.n..n..Xnnn.n..nnX..n...n..n.nX.nn.nnn",".n.nnXnnnnnn.......nnnXnnn..n..nn.n.nnXn..n.","...nnn.X.n..n.n.nn..nn.nnn.n...nn..Xnn.n.n.n","..Xnn.n.X.n.nn..n..nn.nnn.nXnnnn.nnnn...n...","n.nnn...n.n....nn...n.n..nnn.nn...X.nn..nnX.","n.n.nnnn...X.Xn.Xn.XXnn..n...nn...n..n.n...n","..n.nn.nnn..nnnnn.nnnn....nnXn....n...n..n.X","..nXnXn..n.n.n.nn..n.X.nnn..n.....Xnn..nX.nn","n.nn..n.nnn....n.n.n...nnn.XXnnnn.nnnn.nnnnn","n..nnnXn...n...nXn.nnnnnn...n.Xn.n...nnnn...","nnn.Xn.....n..nXnnn.nnn....nn.n.nn.nnn.nnnn."}

    13

    38

    1

    Returns: 8

  15. {"nX.nnnn.nnnn","n..nX.n.n.n.","Xnn.nn.n.nnn",".nnnn.n.n.n.","nX....n.nnnn","..nnnnn.nX.n",".nn...n.nn..","n....n.....X","nnn..nnnn..n","XXnnX..nnn..","X.nn.nn...Xn",".nnXX.nn.nnn","nX.nn.nnnn.n","..nn.nnnn.nX","n.n.nnnnnnnn","n.n.n.nnn..n","nn..Xnn.nXnn","n.nnn..n..n.","..nnnX.n.nnX","nnnnn.n..n.n","X..nnX.n.nnn",".n.n..nnn.Xn",".n.nnnnnnnnn",".nnnnXnnnXnX",".n.nX.nnnnXn","n..nXnnnXnnn","n..nnn.n.Xnn","nn..Xnnnn...","..nnnX..X..n","....n.nnn...","..nnn.nn.nnX","nnnnnnX.n..X","nXnX..nnnn..","X.n...n.n.nn","nnnXn.n.nn.n","n...nnXnn..n","nnnnn.nn..nn","Xnn.n.nnnn..","nnnnnn..n..n","nnnnnnnnnnnn","..n.nnnnnXn.","X...nn.nnnnn","n.X....nX.XX",".nnnnXXn.nn.","nnnnn.nn.n.n","nnnXn..nn.n.","nX.nnnXn.nnn","n.XnX.Xnnnnn","n.nnnXnnnnn."}

    36

    10

    3

    Returns: 12

  16. {"......nn.n..n.n..nnnnnnX.nX.nX",".nXnnn..n...XXn...........n...","Xn....nX.nn...X...Xn.....nn.n.","..Xn.....n.X........n...n.....",".nnn.nnn..n...X.nn...n..X..XX.","n....nnXXXn..n........nX...n.X","n.....X..n.n....X..X.X.nn..n..","XX..n.XX......Xnn.n...n....nn.","..n.X..........Xn.nn.n.nXX.n..",".....n.....n.nXnn..X.nXn.X.n..","....nnn.X.n.nn.n.....n.n.nX...",".nX.Xn.n....XX...n.nn..n.n.Xn.","...nnnn...X.Xnn..Xnn.Xnn...X..","nX.n...n.n...nX.Xn.nn.n.n.....","...X....nnn....n...nn..nnn..n.","..X.nn.n.n.n..nn.nn.nnn.nn.nnn","nn.n.n.n..X..n.X.........nX.XX","X.X.n....n.n.n....n.n.n...n...","X.nn..n.Xn..nnn.n..n..nn...X.n","..nX....n.....nn...XnXn..n..n.","....X.n.n...X.X.XnXn.nnn....Xn","nn.nnnn.n.X.....n.X.nn..n.nn..","...n.n..nn..XX.n.n.nn.n.....n.",".n.n..n...X....Xn........n..n.","...X..X...n..nn.nnnnn...n..nXn",".Xn.nXX..n.n..n.nn.X.nnn..nn..",".nn..n..n...n...n..n.....nn...",".nn.n..nXnnX..n..XX...n.n.nn..","nn.n..n..nnn..nn...XnnXn.n..n.","..X.......n....n..nn.n.n.Xn.Xn","nn...Xn.nnn.X.X.n....X.n.....n","..X.n.n.Xnn.XXnn.n...n...nnnn.",".nn.n....nn..n.nnnXn..n..n..n.","Xn....n...nn....n.n...n..XnX..","X..nn.nn.n.nn....n.X....nnnn.X","...Xn....nnXn.n......nX....nnn","...nnnn.n..n........n.....n.nn",".X.n.n.nXnn...XX.Xnn...X...Xn.","nXn....Xn.X.nnnn..X....n.n....","n.nnn..nnnn.nX..XXn.Xn.Xnnn..n","..nXn.......nX..n...nnn...X..n","..X.n..nn..nnXXnXn..X....nXn.n","n.nn.X.n.n..nn.n...X.nn..X....","n..n.nn.....n..X.X...nnn.X..n."}

    1

    17

    3

    Returns: 7

  17. {".Xnnnnnnnn.nnX.nnnnn....n...nn.nXn.X.nnn","nnnn.nnn.nXnnn..n.XXnnnnn..n.nnn..nXn.nn",".n.n..nnXnnnn.nnnnn..nnX.nnnnn.n.n.n.n..","..n.nXnXnnnnn..n.n..nnnX..nnXXnnn.Xn..n.","n....nnXX.nnnn....nnnn.nnnnnnnnnnnnnnnn.","..Xnnnn.nnXn.XnnX.nnnnnXnnnn.nn......n.n","..XnnX.XnX.nn.nXnnnnnnn.nn.n.nnnnnXXnnnn",".nX..nn.nX.nn.nnnnn.nnn.nnn..n...nnnnnnX","..n.n.nnn..n..nnnnn.nn.nnn.nn..nnn..nn.n","nnn.n.n.nXXn.n.nnn..nn.Xnn.nn.nXX....nnX",".nXnnn..n..nXnnnn.n.nnnn.nnnn..nXn.nnXnn","n.nn.nn.nnXn.nnn..nn.nnnnXnnn.nnnn.nn.nn","n.nn..n..n..Xn.nnnXnnXn.Xn.nnnXXnnnnXXn.","nX..nXnn.nnnXnn..Xnnn.nnnn..nnnnnnnn.n..","..nnnnnn.nn.n.nnXnnnn...Xnnnn....n.n..nn","nXnX..X.n.nnnn.Xn.nnnnnnnn..nnnnn.nX..nX",".nnnn...nn..nXnXnnn..nn.n..Xnn.nnnnnnn..","nnnXnn.n.nnnX..nnn.nnnnnnnnnnnn.nnnnn.nn","nnn.nnnnXnnnX...nnnnn.nnnn.nn.nnnn.nnnnn","nn.nnnnnnnnnnnnnXnn..n....nnnnXnnnnnnn.n","n.nn.nn.X.n.nnnnnnnn.Xnn.nX.nXnnXnnnn.n.","nnnn.nn.Xn.n.nnXn.n.nnnnXnnnnnnnnnnn.n.X","n.nn.XnnnnXnnn.nn.nXX..nnnnn.nXn.nnnnnXn","..n.nnnn.nnXnXnnn...nn..nnnnn.nnnnnnnnn.","nn.nn.nnnnn..Xn.n.nnnn.nXnnnn.nn.nXnnnnn","n.n.nnnn..nnnnnnnXnnnn.nXnX..n...nn.n.Xn",".nn..nXn...nXnnn.nnXXX..nn.nnn.nn.n..nn.","n.nX.XX..nnn.nnn.XnXnn.nn.nnnnnX.nn.Xnn.","n.nn.XnnX..nXnnnnX.n..nnn..n.nnnn.nnXnnn","nn.nnn.nn..nn.nnn.nn.nnnXn.nnXX.nnn.nn.n","nX.n.n.nnnn.nnXnn.XnnnnXn.n.n.nn....n..n","n.nnnnn.X.n...nnnn.nnnn.Xnn.nnnnn..nnnnn","nnnnn..n.nnnnnn.nX.nnnnn.nXnXnnn.nnn.nXn","..n.n.nnnn.nnnnXnnnnnn.nnnnn..nnnnn.nnnn","nn.nnnnnn.nn.n.nnnn..nX.XnnnnnnnXn.nnXnn","nnnnnnnn.X.....n.n.nnnnnnXnnnnXn.nnnn..n","Xnnnnn.n..nnn..n.nnnnn..nnnnnn.n.n.nn.n.","nn.nnnnnnnnXnnnnn.n.nn.nX.nXnnnnn...nX.X","n.nnn.nnnnnn...nn.nnnnn.nnn..nnnn.X..Xnn","nnnnXn.n.nnnnnnn.nn.nX.nnnnnnn.nn.nn...n","nn..nnnn.nn.Xn.nnnnnn.Xnnn.nn.nnnnn.nnXn","n.n...nXnnnnnn.nnnn.n.....n.Xnn..n.nnnnn","nnnn..nnnnnnX.n..nnnXnnXnnn.n..nnnnnnnnn",".nnnnn.XnXnnnnnnX.nXn.nXnXnXnnXnn....nnn",".Xn.nnnnnn.nnnnnnn.nnnnnXn.Xnnn.n.Xn.nnn",".nnX.n.n.XXX.nXX.nXnn.X.n.nXn..Xnnnnn.nn","Xnnnnn..nnnnn...n..n.nnnnn.n.nnn.nXX.nnn","n.nnnXn..X.nnnnn.nnnn...n.n.X..nnnnnnXnX"}

    12

    0

    2

    Returns: 14

  18. {".....nXn....n.Xnn.n...n",".X..n.nXnX.nXnn.....XnX","n..n...n.X...n..nX.n...",".X...n.nn..nn..n..n...n",".X..X.n....nn.n..XXnX.n","....nn...Xn...nn.n.nn..","Xn..X......n..n...n..X.","n.n....X.X......nn.n..n",".n..X.n.n.nX......n...n","n.Xnn..n....n.n.X......",".....n.n.n.nn.....n.nnn","..Xn...n.n...X.nnn.....",".nn..nn.n..Xn.n.......X","n.......Xn..n.nn.nn.n.n","...n.........n..X..X.n.",".nnn...n..X..n..n.nnn..",".nn.n........n.X..n.nnn","nnn.nn......n..n..n..nn","nn...X.n...nn.......Xn.",".nX....nn...n.n........","........X.nn.n..nn...nX","....n........n....nX..n",".n....nn..n...n..X.nn..","X.n..nnnn......n....nnn","..nn..n..n.nXXn......nn","n....n....nX.....n.n..n",".........XX.n.....n.n..","X.....nX.n.n..X..nn....","..nn.n.n.....nn.n....nn","....nnX...nn...n..Xn.n.","nXXnnn.X.nnXn.XX.nn.n.X",".X.X...n..n.n.X....X...",".XX..n.nX...n..n..X..n.","nn.X............n.X.Xn.",".....n....X..nnn....Xnn",".n.n.n..nn..X....n.X...","n..XX.X.nn..Xn..Xn.....",".n.XX.Xn....n.n.X......","...n.....nn.........nnn","X.......X..nX....n..n..","..nnnX....XnnX.X.nnn...",".nnn.X.n...XnXnn..Xn..n","..nn....nX..X...Xnn..n.",".n.......n.n.n....n....",".XnXnn...n..n..nn....nn"}

    35

    9

    2

    Returns: 7

  19. {"nnnnnnnn.nnn.XnnX....nnnnnnnn..nnnn.nnnnnnnn",".n.nnnnXn.n.n.nnnnX.n..nnnn..nnXnnnn.nnn.nn.","n...nn.nnn.n..nnnn.Xnn.n.nnnn.nnn..n.nnnnn..","...Xnnn..nn.n.n.n..nnnnXnnnn.nXnn.nn.n..nnnn","n.n.nnnnnnnnnXnnn.nXnnn.XnnX...Xnnnnn.X.nnn.","nnXXn.nnnnXnnnXn.X.nn.....nnnn.nnn.n..nnX..n","nn.XnXnn.nnn.n..nnnn.n.nn....nn.nnnn..n.n.nn","n.n.nXXnnXnn..nnnXnnn..nnnXnnn.n.n.nn..n.Xn.","n..nnnnXnnnnnn.n.X.n.nnnnnXnnnn.n..nnn...Xnn","..n...n.nnn.nnnnnn.n..nX.nn...n..X.nn..nnnnn","nn.nnn.nnnn.Xnnn..n.n..nnXnn.XnX.nnnn.nnXnXn","nnnnn.nnnX..nnn......nnnn..nnnnnn..nnnn....n","nn.nXnn.nnnnnn.X.X.n.n.n.nnn..n..nn...nnXn.n",".nnnnXn..n.nn..n.n.nnnn.nn.nX..n.nn...nnn..n","X.n.nnn.n..n...nn.nXnn.nXn.Xnn..nnnn..n.nnnn","nX.nnn.n.Xnn.nnnnnn.nnn.nnnn.nnnnnn.nn.X.nnn","nnnnnnn.nnn.nnnnnn..nnX.XX..n.nn..nnnnnnnnn.","nnnnnnXnnXXn...n.Xnnn.nnnnn.nXn.nn...nn...nn",".n.....nnnnnnX.n.nnn..Xn...X..n..n.nnnnn.n..","Xnn...X.nnnnn..nn.n...n..nXn.nn...Xn..X..nnn",".n....nnnnX..n.nnnnn.n.nnn..Xn.X..n.n...n.nn","nn.Xn.Xnnnnnn.nnXn...nnnn.Xnnn.nnn.n...Xnn..","...nn.nn.nnn.nnXn.n.n..nnnn.n.n.nnX.n.nnn.n.","nnn..nnXn.nnnn..n.n.n.nn.nn.n.nnn.Xn.nnnnn..","nnnn.nnn.n.nXnnn..n.nn.n.XnX..Xn..n..nnn..nn",".nnn..nnXnn.Xnnn.n.n.nnX.nnnnnn.nnnnn.nnnn.n","n..Xn.n.X..nn....nnnn.nn..nXn.n...nXnnnnnnnX","nn.n.nnX.nnXnnnn.nnnnnn...nnnnnnnnnn.n..n.Xn"}

    23

    27

    3

    Returns: 11

  20. {".X.n.nn.nnn..X.n.n....nnnn..n","...n..nn..nn.X.nXn....nXn....",".n......X...nn...nnnn.nX..X..","..n...X......nnn...nn.....XX.","...n..nn.......n.......n.X..n","...nn...n....nnn.n......n....","nn.....n.n.nXn..n.X.....n.n.n",".nnnn..XX.n.n.......X...n..nX",".nn.n.....nn..XXn...n.....nn.","...nnXnn.Xnn..n.nX..n...n....","...X..n.n.n..nn..nn.XnX.X...n",".....nn..n....XnnX.nn........","X..nXnn...n...n..n.....n....n","....n.n....nn...n..nXn....n.n","n....n..nnXn....Xn......n.n.n","..X.n...n....nnX.....nn.n..nn",".X..n....XX....nn......nnnn..","..n.X.n.n.nn...nn.n.n....n.nX","n..X....nXnn.X.X.n.nn...nnn..",".n...n...n.n.....nn...n..nn..","n.n.nn.XX.nn.X..nn.XXn..nn...","..nn.n.n.nXX...n..nnn.n....Xn","nn.n....X..n....X.nn.n.X.....","n..X.n.n...XX......n.X.n.....","..Xn...nXnn..nX.n.X..n......n","X..X.XnX.n.nX..nnn....nnn.n..","XnnX.nn.n..X....n...nXn.nn...","...XX.X..n..n....nnn..XX..n..","n.n..nnnn...........n..n....n","XnXn...n......nn...n....nn...",".n.n.Xnn.nn.n.nn.....n.....n.","...n....n.....nnnnX....nXnnn.","nnnn.X...n.X...n..Xn.........",".X.n..nn..nn.nn...Xnnn.n.nX..",".....X..........n.nn....n....","n.nnn....n....n.nnnnn...nnn.n"}

    5

    25

    1

    Returns: 6

  21. {"...............n......","...............n......","...............n......","...............n......","...............n......","...............n......","...............n......","...............n......","...............n......","...............n......","...............n......","...............n......","...............n......","...............n......","...............n......","...............n......","...............n......","...............n......","...............n......","...............n......","...............n......","...............n......","...............n......","...............n......","...............n......","...............n......","...............n......","...............n......","...............n......","...............n......","...............n......","...............n......","...............n......","...............n......","...............n......","...............n......","...............n......","...............n......","...............n......","...............n......","...............n......","...............n......","...............n......","...............n......","...............n......","...............n......","...............n......","...............n......","...............n......","...............n......"}

    0

    0

    1

    Returns: 3

  22. {"XXXXX",".....",".X.X.",".XXX.","nnnnn"}

    2

    2

    0

    Returns: 5

  23. {"XXXXX",".....",".X.X.",".XXX.","nnnnn"}

    2

    2

    1

    Returns: 4

  24. {"XXXXX",".....",".X.X.",".XXX.","nnnnn"}

    2

    2

    2

    Returns: 3

  25. {"Xnnnnnnn","XnXXXXXn","XnX...Xn","XnX.X.Xn","XnXXX.Xn","Xn....Xn","XXXXXXXn"}

    3

    3

    0

    Returns: 3

  26. {"nXXXXX","Xnnnnn","Xn...n","Xn...n","Xn...n","Xnnnnn"}

    2

    2

    3

    Returns: 9

  27. {"...............","...............","...............","...nnnnnnnnn...","...n.......n...","...n.nnnnn.n...","...n.n...n.n...","...n.n.n.n.n...","...n.n...n.n...","...n.nnnnn.n...","...n.......n...","...nnnnnnnnn...","...............","...............","..............."}

    7

    7

    3

    Returns: 10

  28. { "." }

    0

    0

    0

    Returns: 0

  29. { "X.......................n" }

    0

    1

    0

    Returns: 1

  30. { "nnnn.nnnn.nnnn.nnnnnnnn", "nnnn.nnnn.nnnn.nnnnnnnn", "nnnn.nnnn.nXnn.nnXnnnnn", "nnnn.nnnX.nnnn.nnnnnXnn", "nnnn.nnnn.nnXn.nnnnnnnn", "nnnn.nnnn.nnnn.nnnn...n", "nnnn.nnnn.nnnn.nnnnnnnn" }

    4

    14

    3

    Returns: 12

  31. { "..........n", "n..........", "XXXXXXXXXX.", "nnnnnnnnnnn", "...........", "X.X.X.X.X.." }

    0

    8

    3

    Returns: 7


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: